gpt4 book ai didi

javascript - 传单 : ordering GeoJSON elements inside a layer

转载 作者:行者123 更新时间:2023-11-30 00:04:16 26 4
gpt4 key购买 nike

我正在使用带有 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));
}
});

您会注意到可以在弹出窗口中读取特征的 zIndexOffset,它们看起来没问题。但是圆圈的显示顺序并不反射(reflect) zIndexOffset。我试过使用 setZIndexOffset方法,但据我了解,它仅适用于标记。

有人知道怎么做吗?非常感谢任何见解!

最佳答案

虽然 ghybs 答案非常适用于 leaflet 0.7,但切换到 leaflet 1.0 允许使用 Pane ,这使得解决方案更简单:

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);
layer.setStyle({pane: 'pane'+ feature.properties.nb});
var currentPane = map.createPane('pane' + feature.properties.nb);
currentPane.style.zIndex = Math.round(1/feature.properties.nb*10000);
layer.bindPopup(feature.properties.name + " : " + String(feature.zIndexOffset));
}
});

希望对其他人有用!

关于javascript - 传单 : ordering GeoJSON elements inside a layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com