我是传单的新手,但我正在尝试实现一个用例,我在这里找不到任何示例或问题。提前感谢您帮助解决这个问题:
现场演示是here,here's是GitHub存储库中感兴趣的代码。
当您将鼠标悬停在各种geoJSON功能上时,我使用onEachFeature将样式更改为“突出显示”'该地图上的特色区域,并在右上角的信息框中显示其名称:
function onEachFeature (feature, layer) {
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight
});
layer.bindPopup(feature.properties.f2,customOptions);
}
var geojson;
geojson = L.geoJson(myData,{
style: style,
onEachFeature: onEachFeature,
}).addTo(map);
问题出现在功能重叠的地方。当鼠标悬停在重叠区域上时,只有一个是目标。相反,我希望所有在光标位置重叠的功能都被突出显示&#39 ;;并能够列出信息框中的所有名称。
我猜测解决方案更像是我应该检索所有mousemove事件的latlng,确定latlng是否在任何geoJSON对象的边界,如果是,则迭代这些突出显示并获取所有人的名字。我不确定是否有一个插件能够更优雅地为我处理这个问题。
无论如何在Leaflet中同时定位多个重叠的geoJSON图层?
答案 0 :(得分:0)
您描述了一种简单的方法,我建议您使用它。我建议你只做一次优化
不要捕获所有mousemove
事件。您需要在每个要素上使用mouseover
,然后检查是否有其他要素重叠。
function onEachFeature (feature, layer){
layer.on('mouseover',function(e){
var point = e.latlng;
map.eachLayer(function(layer){
var bounds = layer.getBounds();
if(bounds.contains(point))
highlite(layer);
})
})
}
另一种方法是使用L.Canvas
渲染器并对其进行扩展,以便为指针下的每个图层触发mouseover
或其他处理程序。