【问题标题】:Leaflet: Map Click Event doesn't work when clicked on an overlay geojson layer传单:单击覆盖 geojson 图层时,地图单击事件不起作用
【发布时间】:2015-08-11 02:36:49
【问题描述】:

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

我在地图上实现了一个点击事件

map.on('click', function(e) {        
    console.log(e)       
});

一切正常。

我还在地图上添加了 geojson 图层。所以,问题是当我点击覆盖 geojson 层(实际上是一个多边形层)时,地图点击事件没有被触发。因此,我的问题是,当我点击地图上的覆盖层时,我应该怎么做才能使地图点击事件也起作用?

【问题讨论】:

  • 为什么不绑定覆盖层?您想捕捉地图上的点击还是特定要素上的点击?
  • 覆盖层是它自己的对象,与地图对象分开。如果您要将事件绑定到地图对象,它不会自动转移到叠加层。您需要将事件绑定到覆盖而不是/除了地图对象之外,具体取决于您要执行的操作。

标签: javascript leaflet


【解决方案1】:

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

您可以将点击绑定到整个叠加层,因为它继承自 L.Evented 或单个功能。

要将其绑定到单个功能,请检查onEachFeature section of the tutorial

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

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

另外,请注意doc explains

事件被传播到 FeatureGroup,所以如果该组有一个 事件处理程序,它将处理来自任何层的事件。这 包括鼠标事件和自定义事件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多