删除标记侦听器

时间:2010-07-20 12:56:11

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

这次有点简单的问题(解释):

我有一系列标记,我配备了eventlisteners:

for (i in markersArray) {
google.maps.event.addListener(markersArray[i], 'click', function() {        
    //stuff it does
    google.maps.event.removeListener(?????)     //remove self... but HOW?!
});}
正如我在评论中提到的那样,我只想让听众在被点击后被移除。

问题是我不知道听众的句柄是什么。

4 个答案:

答案 0 :(得分:5)

您可以使用“addListenerOnce”。然后你甚至不必费心去除听众。

  

addListenerOnce(实例:对象,   eventName:string,handler:Function)

     

与event.AddListener类似,但是处理程序   处理后自行删除   第一次活动。

答案 1 :(得分:2)

您还可以使用clearListeners(instance:Object, eventName:string) http://code.google.com/apis/maps/documentation/javascript/reference.html

答案 2 :(得分:0)

我很确定在这种情况下你会使用一个监听器数组(或一个封装标记和监听器的对象)。 google.maps.event返回一个事件对象。 Check the documentation

var markersListeners = [];

for (i in markersArray)
{
    markersListeners[i] = google.maps.event.addListener(markersArray[i], 'click', function()
    {
        //stuff it does
        google.maps.event.removeListener(markersListeners[i]);
    });
}

免责声明:我没有检查语法。您可能也会尝试使用removeListener(markersArray [i]),但我不知道它是否有效。

答案 3 :(得分:0)

旧帖子,但文档目前显示:https://developers.google.com/maps/documentation/javascript/events#removing

var listener1 = marker.addListener('click', aFunction);
var listener2 = marker.addListener('mouseover', bFunction);

// Remove listener1 and listener2 from marker instance.
google.maps.event.clearInstanceListeners(marker);