Leaflet 在Wikidata查询服务中排序地图图例项

Leaflet 在Wikidata查询服务中排序地图图例项,leaflet,sparql,openstreetmap,wikidata,Leaflet,Sparql,Openstreetmap,Wikidata,Wikidata提供了在OpenStreetMap上呈现SPARQL结果的方法。用于: 我想知道是否有办法控制右上角图例中项目的顺序。似乎试图将层名称解析为数字。如果出现故障,图例中的图层顺序对应于在地图视图和表格视图之间切换时表格中第一次出现的顺序 因此,您应该使用自然可排序的值绑定其他变量,然后根据这些值对结果进行排序。也许使用REPLACE是可能的,但我更喜欢使用简单的字典 -大城市,按人口划分为地图图层- 默认视图:地图 选择不同的城市标签 样本位置作为位置最大总体作为总体 样品层作为层

Wikidata提供了在OpenStreetMap上呈现SPARQL结果的方法。用于:

我想知道是否有办法控制右上角图例中项目的顺序。

似乎试图将层名称解析为数字。如果出现故障,图例中的图层顺序对应于在地图视图和表格视图之间切换时表格中第一次出现的顺序

因此,您应该使用自然可排序的值绑定其他变量,然后根据这些值对结果进行排序。也许使用REPLACE是可能的,但我更喜欢使用简单的字典

-大城市,按人口划分为地图图层- 默认视图:地图 选择不同的城市标签 样本位置作为位置最大总体作为总体 样品层作为层{ 值?层?顺序{ 20M 6} ?城市wdt:P31/wdt:P279*wd:Q515; wdt:P625?位置; wdt:P1082?人口。 过滤?人口>=500000。 绑定 如果?人口<1000000,2000万 作为?层。 服务wikibase:标签{bd:serviceParam wikibase:language en.} }按城市分组按样本顺序城市标签顺序
谢谢你的解释。我想您也可以对最终数据进行排序,例如,按ASC?总体排序,并得到相同的结果。@floatingpurr,是的,我已经过度复杂化了:。然而,答案中的方法也适用于纯分类数据。
#Big cities, grouped into map layers by population
#defaultView:Map
SELECT DISTINCT ?city ?cityLabel (SAMPLE(?location) AS ?location) (MAX(?population) AS ?population) (SAMPLE(?layer) AS ?layer)
WHERE
{
  ?city wdt:P31/wdt:P279* wd:Q515;
        wdt:P625 ?location;
        wdt:P1082 ?population.
  FILTER(?population >= 500000).
  BIND(
    IF(?population < 1000000, "<1M",
    IF(?population < 2000000, "1M-2M",
    IF(?population < 5000000, "2M-5M",
    IF(?population < 10000000, "5M-10M",
    IF(?population < 20000000, "10M-20M",
    ">20M")))))
    AS ?layer).
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?city ?cityLabel