Leaflet:在层内排序 GeoJSON 元素

J. *_*son 5 javascript geojson leaflet

我正在使用传单和 pointToLayer 函数显示 GeoJSON 层。到目前为止一切正常。

但我想根据 GeoJSON 的属性以特定顺序显示我的点。这很重要,因为我的点的半径随该属性的变化而变化,并且我需要在顶部显示较小的圆圈。我希望我能说清楚。

我尝试了很多事情,但我认为这是我最好的尝试:

var pointLayer = L.geoJson(centroids, {
                pointToLayer: function (feature, latlng) {
                    return L.circleMarker(latlng, {
                        fillColor: "#76C551",
                        color: "#000",
                        weight: 1,
                        fillOpacity: 1
                    });
                },
                onEachFeature: function (feature, layer) {
                    var radius = calcPropRadius(feature.properties.nb);
                    layer.setRadius(radius);
                    feature.zIndexOffset = 1/feature.properties.nb*1000;
                    layer.bindPopup(feature.properties.name + " : " + String(feature.zIndexOffset));
                }
            });
Run Code Online (Sandbox Code Playgroud)

您可以注意到,可以在弹出窗口中读取功能的 zIndexOffset,并且它们看起来不错。但圆圈的显示顺序并不反映 zIndexOffset。我尝试过使用setZIndexOffset方法,但据我了解,它仅适用于标记。

有谁知道如何做到这一点 ?非常感谢您的任何见解!

ghy*_*ybs 2

正如您所发现的,该zIndexOffset选项仅适用于L.marker's。

L.circleMarker进入,您可以使用和方法overlayPane将它们重新排序。.bringToFront().bringToBack()