我可以看到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,我堅持這種做法。我擔心將許多聽衆附加到地圖上會拖慢性能。另外,它涉及到谷歌代碼原型。
但這是一個有趣的想法。如果你給這樣的一個去,請讓我知道它是如何執行的,以及它如何爲你制定。
解決方法1不爲我工作,我試圖避免JS循環在此應用。 – DanRedux 2012-04-30 11:37:09