2015-05-28 48 views
3

我在我的项目之一使用单张和我面临的一个问题,这说明如下覆盖GeoJSON的层上点击时事件不起作用:单张:地图点击

我实现在地图上使用点击事件

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

和一切工作正常。

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

+0

为什么你不绑定到覆盖层?你想捕获地图上的点击或特定的功能吗? – snkashis

+0

覆盖层是它自己的对象,与地图对象分开。如果您要将事件绑定到地图对象,则不会自动传输到叠加层。您需要将事件绑定到叠加层,而不是/除了地图对象之外,具体取决于您尝试执行的操作。 – Kathy

回答

0

正如评论中所说,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,所以如果该组有一个 事件处理程序,它会处理来自任何层的事件。这 包括鼠标事件和自定义事件。

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