是否可以在图层控件中订购叠加层?
这是我的问题。当我使用叠加层执行此操作时:
var overlays = {
"Apples": apples,
"Bananas": bananas,
"Peaches": peaches
};
L.control.layers(baseLayers, overlays).addTo(map);
Leaflet以随机的方式将叠加层添加到地图上的图层控件中(由于迭代):
- Bananas
- Apples
- Peaches
是否可以详细说明我想要显示叠加层的顺序? *(在我的情况下,我希望按字母顺序排列。另外,我使用的是Mapbox API)
谢谢。
答案 0 :(得分:1)
我不确定Mapbox API是否更改了默认的图层控制代码/行为,但后者并未提供以特定顺序显示叠加层的100%可靠方式。有关详细信息,请参阅post。
解释是,图层控件通过其“标记”(使用L.stamp(myLayer)
创建的唯一标识整数)迭代叠加。根据您的图层类型,此图章会在不同时刻自动分配。
您可以在实例化图层后立即强制创建。例如,在您的情况下:
var apples = L.layerGroup();
L.stamp(apples);
var bananas = L.layerGroup();
L.stamp(bananas);
var peaches = L.layerGroup();
L.stamp(peaches);
不幸的是,根据JS规范,迭代的顺序并不保证,因此在这种行为中不可能获得100%的可靠性。
话虽如此,在我测试的所有浏览器中,顺序都符合自然数字顺序,所以截至今天,这个技巧有效。
如果您想要更有信心,您应该寻找明确为您提供手动指定列表顺序的功能的控制插件。