作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 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/
我是一名优秀的程序员,十分优秀!