宣传单层控制:订购

时间:2016-05-24 14:23:07

标签: leaflet

我们使用Leaflet的标准"layer control"。实例化如下:

this.controls[id] = L.control.layers({}, {}, {
   collapsed: false
});

以动态和随机顺序添加图层(取决于xhr请求何时完成)。但是,传单隐含似乎使用相应图层的_leaflet_id在图层控件中进行排序,因此我们的图层以随机顺序显示。

有没有办法告诉传单它应该在控件中显示图层的顺序?例如。通过在调用.addOverlay.addBaseLayer方法时传递一些额外的参数?

宣传单版本为1.0-dev

1 个答案:

答案 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