3

我创建了一个标记并将单击事件侦听器附加到该标记。但是,我想检查单击事件是否已附加到标记,如果没有,请附加单击事件侦听器。

// 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;
  });
}

在添加新标记和编辑标记期间执行相同的代码。我只是想知道除了添加标志之外是否还有其他方法?

4

3 回答 3

1

添加标志实际上很好。

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

于 2013-09-26T08:38:07.587 回答
0

hasListeners 返回一个布尔值:

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

也适用于地图本身:

google.maps.event.hasListeners(map,'idle')
于 2018-04-25T22:12:37.180 回答
-1

丑陋的 hack 将删除所有侦听器并再附加一次。

google.maps.event.clearListeners(map, 'click');
于 2014-02-22T11:10:47.403 回答