我正在使用Google的API創建動態地圖。我試圖讓地圖動態應用的信息框每個標記..我不能弄明白:簡單的動態Google地圖問題
http://www.zephyrusdevelopment.com/clients/electrotrack/map2.html
我正在使用Google的API創建動態地圖。我試圖讓地圖動態應用的信息框每個標記..我不能弄明白:簡單的動態Google地圖問題
http://www.zephyrusdevelopment.com/clients/electrotrack/map2.html
它看起來像你落入經典的循環加-closure誤差,以簡單的形式是這樣的:
while(i<=(a_l-1)) {
// snip
var marker = new google.maps.Marker({
// snip
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
// snip
}
的問題是,由於封閉在Javascript中的工作方式,處理函數將保持一個持久的參考變量,即使它是分配給一個新的對象。最終結果:您的所有處理程序都會引用分配給的最後一個對象。
有幾種方法可以解決這個問題;我通常使用一個單獨的功能來分配單擊處理程序,捕捉在處理範圍內正確對象:
function addClickHandler(marker) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
while(i<=(a_l-1)) {
var marker = new google.maps.Marker({
// snip
});
addClickHandler(marker);
}
是的,如果你看,我做了什麼,把整個處理程序放在循環之外。儘管感謝您的幫助! :) – user981408
如果這是正確的答案,您可以點擊旁邊的複選標記將其標記爲正確 - 謝謝! – nrabinowitz
雖然這是很好的發佈鏈接到一個例子,這是一般更好地*也*後段從相關的代碼,所以我們可以看到你已經嘗試過。 – nrabinowitz
好的,我會在下次做。不過,我明白了。 – user981408