Leaflet 传单:如何在图层控件中指定覆盖顺序?

Leaflet 传单:如何在图层控件中指定覆盖顺序?,leaflet,mapbox,Leaflet,Mapbox,是否可以在图层控件内对覆盖进行排序? 这是我的问题。当我使用覆盖层执行此操作时: var overlays = { "Apples": apples, "Bananas": bananas, "Peaches": peaches }; L.control.layers(baseLayers, overlays).addTo(map); 传单以随机方式(由于迭代)将覆盖添加到地图上的图层控件: 有没有可能详细说明我想要显示覆盖层的顺序*(就我而言,我希望它按字母顺序排列。此外,我正在使用Map

是否可以在图层控件内对覆盖进行排序?

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

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

L.control.layers(baseLayers, overlays).addTo(map);
传单以随机方式(由于迭代)将覆盖添加到地图上的图层控件:

有没有可能详细说明我想要显示覆盖层的顺序*(就我而言,我希望它按字母顺序排列。此外,我正在使用Mapbox API)


谢谢。

我不确定Mapbox API是否更改了默认图层控制代码/行为,但后者并没有提供100%可靠的方式来按特定顺序显示覆盖。详情见此

解释是,层控件通过其“stamp”(使用
L.stamp(myLayer)
创建的唯一标识整数)迭代覆盖。根据图层类型,此戳记将自动指定,但会在不同的时刻指定

您可以在实例化图层后立即强制创建它。例如,在您的案例中:

var apples=L.layerGroup();
L.邮票(苹果);
var bananas=L.layerGroup();
L.邮票(香蕉);
var peaches=L.layerGroup();
L.邮票(桃子);
不幸的是,根据JS规范,迭代的顺序没有得到保证,因此不可能在这种行为中有100%的可靠性

也就是说,在我测试过的所有浏览器中,顺序都与自然数顺序一致,所以到今天为止,这个技巧仍然有效


如果你想获得更多的自信,你应该寻找能明确为你提供手动指定列表顺序功能的控制插件。

Perfect!工作得很好!只是一个观察:这在FireFox(38.2.1)中似乎不起作用,但Chrome和IE都很好。该死的,我希望看到它以不同的顺序迭代!请你做一个JSFIDLE给我看看好吗?我的Firefox仍然以正常的数字顺序进行迭代()。你有哪个版本的FF和OS?我有大约28个以上的变量正在切换,所以我将尝试看看如何通过一个示例进行移植。我很快就要发帖了。
- Bananas
- Apples
- Peaches