我正在使用leaflet显示一个GeoJSON图层,使用pointToLayer函数。目前一切正常。
但是我想根据GeoJSON的属性以特定顺序显示我的点。这很重要,因为我的点的半径随着该属性而变化,并且我需要将较小的圆形放在顶部显示。希望我表达清楚了。
我尝试了许多方法,但以下是我认为最好的尝试:
你会注意到,要素的zIndexOffset可以在弹出窗口中读取,并且它们看起来很好。但是圆的显示顺序并没有反映zIndexOffset。 我尝试使用setZIndexOffset方法,但据我所知,它仅适用于标记。 有人知道如何做吗?非常感谢任何见解!
但是我想根据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));
}
});
你会注意到,要素的zIndexOffset可以在弹出窗口中读取,并且它们看起来很好。但是圆的显示顺序并没有反映zIndexOffset。 我尝试使用setZIndexOffset方法,但据我所知,它仅适用于标记。 有人知道如何做吗?非常感谢任何见解!
L.geoJson()
将您的 GeoJSON 数据转换为 Leaflet 图层,它就会自动将 GeoJSON 要素数据添加到每个circleMarker.feature
成员中。如果您遇到问题,请随时提出新问题。至于排序,您可能也会对这篇文章感兴趣:https://gis.stackexchange.com/questions/166252/geojson-layer-order-in-leaflet-0-7-5/167904#167904 - ghybs