我有一系列标记,我配备了eventlisteners:
for (i in markersArray) {
google.maps.event.addListener(markersArray[i], 'click', function() {
//stuff it does
google.maps.event.removeListener(?????) //remove self... but HOW?!
});}
正如我在评论中提到的那样,我只想让听众在被点击后被移除。
问题是我不知道听众的句柄是什么。
答案 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);