2010-07-20 62 views
5

有些简单的问题(解释)这个时候:删除标记听众

我有我与事件监听装备正是如此标记的数组:

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

正如我在评论提到,我只是想听者一旦被点击就被移除。

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

+0

我没有注意到你删除的'谷歌maps'标签,就在我重新标记它。我会保留它,因为这就是所有Google Maps API问题正常标记的方式。 – 2010-07-21 07:40:08

回答

4

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

addListenerOnce(例如:对象, eventName的:字符串处理函数:功能)

像event.AddListener,但处理 处理 第一个事件后删除自身。

+0

不错的一个,就是我需要的:) – Stjerneklar 2010-07-21 07:34:50

+0

辉煌!谢谢! – 2011-08-17 13:26:25

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]),但不知道它是否有效。

+0

removeListener(markersArray [i])在我昨天试过时一直不工作,一直给我api错误 – Stjerneklar 2010-07-21 07:35:51