我可以为您看到 2 个基本选项:
1 - 创建一个Array
标记,实现一个function
传递给addListener
的标记,然后在事件触发函数回调时循环标记:
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 );
}
});
2 - 添加一个新的回调函数google.maps.Marker.prototype
并多次调用addListener
,以便每个标记接收自己的事件通知:
google.maps.Marker.prototype.idleCallback = function() {
this.setVisible( false );
};
var newMarker1 = new google.maps.Marker( opts1 );
google.maps.event.addListener( window.gmap, "idle", newMarker1.idleCallback );
var newMarker2 = new google.maps.Marker( opts2 );
google.maps.event.addListener( window.gmap, "idle", newMarker2.idleCallback );
//and repeat for each marker; you get the idea
我自己,我总是选择选项 1,我坚持这种方法。我担心将许多侦听器附加到 Map 会降低性能。此外,它还涉及在 google 代码原型中乱搞。
但这是一个有趣的想法。如果你试一试这样的事情,请告诉我它是如何执行的以及它对你的效果如何。