我的項目使用JSON訂閱源來獲取有關指定緯度和經度邊界內的地震的信息,實質上是製作一個框。我將這些信息轉化爲Google地圖上的標記。我需要每個標記還顯示一些額外的信息,所以我試圖使用內置的信息窗口對象,例如,當你點擊你打開提示與該標記相關的一些信息的標記。然而,我發現無論我點擊什麼標記,同一個infowindow總是出現在該組的同一個標記之上,我相信它始終是我循環中創建的最後一個infowindow。這是代碼。嘗試將多個InfoWindows綁定到Google Map上的多個標記並且失敗
$.getJSON(url, function(json) {
for(var i = 0; i < json.earthquakes.length; i++)
{
var pos = new google.maps.LatLng(json.earthquakes[i].lat, json.earthquakes[i].lng);
var info = json.earthquakes[i].lat + ", " + json.earthquakes[i].lng;
var marker = new google.maps.Marker({
map: map,
position: pos,
title: json.earthquakes[i].eqid
})
var tooltip = new google.maps.InfoWindow({
content: info
})
google.maps.event.addListener(marker, 'click', function() {
tooltip.open(map, marker);
});
markers.push(marker);
tooltips.push(tooltip);
}
});
標記是用於在地圖和工具提示上的所有標記的對象的陣列是另一個數組用於存儲信息窗口對象。他們是全球性的。
這是由於閉包工作(標記由參考封過去了,你希望是複印件)。但是,當監聽器被調用,它會隨着'this'參照對象(標記),向其中加入監聽,所以你可以使用'的this'代替'marker'。 – herman 2014-07-30 12:34:49