移除标记监听器

5

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

我有一个标记数组,我使用以下方式装备它们的事件监听器:

for (i in markersArray) {
google.maps.event.addListener(markersArray[i], 'click', function() {        
    //stuff it does
    google.maps.event.removeListener(?????)     //remove self... but HOW?!
});}

如我在评论中提到的那样,我只是希望一旦单击后,便能够删除监听器。

问题在于我不知道监听器的句柄是什么。


我没有注意到您在我重新标记之前删除了google-maps标签。我会保留它,因为这是所有Google Maps API问题通常使用的标签。 - Daniel Vassallo
4个回答

4
您可以使用"addListenerOnce"。这样,您甚至都不需要费心去删除侦听器。
addListenerOnce(instance:Object,eventName:string,handler:Function)
与event.AddListener类似,但处理第一个事件后,处理程序会自行删除。

太棒了,正是我所需要的 :) - Stjerneklar

2

1

0

在这种情况下,我相当确定您会使用侦听器数组(或封装标记和侦听器的对象)。google.maps.event返回一个事件对象。请查看文档

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]),因为我看到过这样的操作,但不知道它是否可行。


昨天我尝试执行 removeListener(markersArray[i]),但并没有起作用,不断给我API错误。 - Stjerneklar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接