我们使用Leaflet的标准"layer control"。实例化如下:
this.controls[id] = L.control.layers({}, {}, {
collapsed: false
});
以动态和随机顺序添加图层(取决于xhr请求何时完成)。但是,传单隐含似乎使用相应图层的_leaflet_id在图层控件中进行排序,因此我们的图层以随机顺序显示。
有没有办法告诉传单它应该在控件中显示图层的顺序?例如。通过在调用.addOverlay
或.addBaseLayer
方法时传递一些额外的参数?
宣传单版本为1.0-dev
答案 0 :(得分:0)
我找到了解决问题的方法。然而,这不是一个干净的解决方案,所以请随意发布更好的答案。
Leaflet使用图层对象的_leaflet_id进行排序。因此,首先创建的图层将始终位于顶部。为了对图层进行排序,您必须将实际图层包装在图层/要素组中。
|- dummy layer group
|- some dummy geojson layer
|- your actual layer (will be added later)
编程方式:
var oFeatureGroup = L.featureGroup([
L.geoJson({
"type": "FeatureCollection",
"features": []
})
]);
然后我们做一些异步加载,一旦我们准备就绪,我们将图层添加到 - 或多或少空的图层组:
oFeatureGroup.addLayer(oMyMagicAsyncLoadedLayer)
然后我们可以将图层添加到图层控件中,它将按“预期”排序,其中顺序取决于oFeatureGroup
图层的创建顺序,而不是oMyMagicAsyncLoadedLayer
。