传单:单击覆盖 geojson 图层时,地图单击事件不起作用

muz*_*far 7 javascript leaflet

我在我的一个项目中使用 Leaflet,但遇到了一个问题,解释如下:

我使用以下方法在地图上实现了点击事件

map.on('click', function(e) {        
    console.log(e)       
});
Run Code Online (Sandbox Code Playgroud)

一切正常。

我还在地图上添加了 geojson 图层。所以,问题是当我单击覆盖 geojson 层(实际上是多边形层)时,地图单击事件未触发。因此,我的问题是我应该做什么,以便当我单击地图上的覆盖层时,地图单击事件也起作用?

Fra*_*uga 4

正如评论中所说,该click事件绑定到地图或覆盖层,但它不会从一个层冒泡到另一个层。您必须将其附加到所需的对象。

您可以将单击绑定到整个覆盖(因为它继承自L.Evented)或单个功能。

要将其绑定到各个功能,请查看教程的 onEachFeature 部分

function onEnachFeature(feature, layer) {
    console.log(feature.properties);
}
L.geoJSON(geojsonFeature, {
    onEachFeature: onEachFeature
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)

根据您想要实现的目标,bindPopupbindTooltip很有用。

另外,请考虑到正如文档所解释的那样

事件会传播到要素组,因此如果该组具有事件处理程序,它将处理来自任何图层的事件。这包括鼠标事件和自定义事件。

因此,您可以根据您的用例选择绑定到每个功能或具有类似效果的图层。