Leaflet:如何指定图层控件中叠加的顺序?

时间:2015-11-11 17:00:08

标签: leaflet mapbox

是否可以在图层控件中订购叠加层?

这是我的问题。当我使用叠加层执行此操作时:

var overlays = {
"Apples": apples,
"Bananas": bananas,
"Peaches": peaches
};

L.control.layers(baseLayers, overlays).addTo(map);

Leaflet以随机的方式将叠加层添加到地图上的图层控件中(由于迭代):

- Bananas
- Apples
- Peaches

是否可以详细说明我想要显示叠加层的顺序? *(在我的情况下,我希望按字母顺序排列。另外,我使用的是Mapbox API)

谢谢。

1 个答案:

答案 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%的可靠性。

话虽如此,在我测试的所有浏览器中,顺序都符合自然数字顺序,所以截至今天,这个技巧有效。

如果您想要更有信心,您应该寻找明确为您提供手动指定列表顺序的功能的控制插件。