如何检查google maps api v3中的标记是否已存在事件

时间:2013-09-26 08:13:56

标签: javascript google-maps google-maps-api-3

我已经为标记创建了一个标记和附加的点击事件监听器。但是,我想检查点击事件是否已经附加到标记,如果没有,请附加click事件监听器。

// If no click event listener, then attach the listener
google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map, marker);
});

但我可以使用标记对象中的自定义标志来检查:

// If no click event listener, then attach the listener
if (! marker._isClickEventBound) {
  google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map, marker);
    marker._isClickEventBound = true;
  });
}

在添加新标记和编辑标记期间执行相同的代码。我只是想知道是否有其他方式而不是添加标志?

3 个答案:

答案 0 :(得分:1)

添加标志实际上很好。

除此之外,google.maps.event.addListener会返回一个事件对象。您可以跟踪已添加的所有事件对象,并在需要时清理标记事件......

答案 1 :(得分:0)

hasListeners返回一个布尔值:

google.maps.event.hasListeners(marker,'click')

也适用于地图本身:

google.maps.event.hasListeners(map,'idle')

答案 2 :(得分:-1)

丑陋的黑客将删除所有侦听器并再次附加它。

google.maps.event.clearListeners(map, 'click');