Google地图侦听器上下文

时间:2012-04-26 23:03:42

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

我需要Google Maps Marker来响应Map(空闲)触发的事件。该事件触发一个功能。支持此功能以对标记执行操作,但当然,“此”指的是地图。如何在函数内部引用设置事件监听器的标记。

每个Marker都会向地图添加一个空闲侦听器。我可以跟踪所有标记,并在Map Idle事件中循环遍历它们并触发函数,但我希望有更多的zen方法。

我目前的方法是:

var self=newMarker;
google.maps.event.addListener(window.gmap,'idle',function(){
    self.setVisible(false); });

但它似乎只适用于1个标记。 “newMarker”是我试图从事件内部访问的标记对象,正如我所说的那样有多个标记,所以我不能将它存储在全局变量或任何东西中。

2 个答案:

答案 0 :(得分:1)

使用jQuery的“代理”,jQuery Proxy

答案 1 :(得分:0)

我可以看到2个基本选项:

1 - 创建Array个标记,实现一个传递给function的{​​{1}},然后在事件触发函数回调时遍历标记:

addListener

2 - 向var markerList = new Array(); //build the markers and add them to markerList with multiple calls to push... google.maps.event.addListener( window.gmap, "idle", function() { for ( var i = 0; i < markerList.length; i++ ) { markerList[i].setVisible( false ); } }); 添加新的回调函数,并多次调用google.maps.Marker.prototype,以便每个标记都会收到自己的事件通知:

addListener

我自己,我总是选择选项1而且我坚持使用这种方法。我担心将许多监听器附加到Map会降低性能。此外,它涉及在谷歌代码原型中捣乱。

但这是一个有趣的想法。如果你给这样的东西,请告诉我它是如何表现的,以及它如何为你效力。