传单:在一个层内排序GeoJSON元素
Leaflet : ordering GeoJSON elements inside a layer
我正在使用传单显示一个GeoJSON层,带有pointToLayer函数。到目前为止一切正常。
但是我想根据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方法,但据我所知,它只适用于标记。
有人知道怎么做吗?谢谢你的真知灼见!
ghybs的答案对于宣传单0.7非常有效,而切换到宣传单1.0允许使用窗格,这使得解决方案更容易:
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));
}
});
希望对别人有所帮助!
正如您所发现的,zIndexOffset
选项仅适用于L.marker
。
L.circleMarker
进入overlayPane
,您可以使用.bringToFront()
和.bringToBack()
方法将它们重新排序。
相关文章:
- 将谷歌索引内容声明在一个内联的javascript变量中
- 使用 jQuery 编写一个可排序的列表(只是基本功能,jQueryUI 对我来说太重了)
- 有没有一个带有排序功能的多选插件
- 是否有一个内置函数可以将创建日期添加到couchDB中的文档中
- JSQueryUI可从一个ul排序到另一个ul
- Coffescript:从现有类中生成一个内联工作者
- 我怎么能先为一个值排序,而不是为另一个值
- 迭代一个已排序的猫鼬集合
- 如何用JavaScript创建一个字母排序器
- 使用两个文本区域(一个输入和一个输出)和JavaScript创建一个字母排序器
- 为什么一个内联块元素比其他元素略高
- 是一个经过排序的Backbone.js集合
- 为什么JavaScript中没有一个内置的方法来检查一个对象是否是普通对象?
- 我想写一个重新排序的用户界面?怎么做
- javascript/jQuery getJSON非常慢,有一个内循环
- 是否有一个内置的函数来配置q中的比赛?
- 在一个已排序的旋转数组中找到最小的元素
- Google Maps API v3:为symbolPath传递一个图像,而不是一个内置符号
- 使用jQuery和插件制作一个可排序的表
- 传单:在一个层内排序GeoJSON元素