我们使用Leaflet中的标准"layer control"。实例化过程如下:
this.controls[id] = L.control.layers({}, {}, {
collapsed: false
});层是以随机顺序动态添加的(取决于xhr请求何时完成)。但是,leaflet隐含似乎使用相应层的_leaflet_id在layer控件中排序,因此我们的层以随机顺序出现。
有没有办法告诉leaflet在控件中显示图层的顺序?例如,在调用.addOverlay或.addBaseLayer方法时传递一些额外的参数?
Leaflet版本为1.0-dev
发布于 2016-05-25 14:42:15
我找到了一些解决这个问题的方法。然而,这不是一个干净的解决方案,所以请随意发布更好的答案。
Leaflet使用layer对象的_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)然后我们可以将层添加到layer控件中,它将被排序为"expected“,其中顺序取决于创建oFeatureGroup层的顺序,而不是oMyMagicAsyncLoadedLayer。
https://stackoverflow.com/questions/37416404
复制相似问题