0
我正在嘗試使用JSON訂閱源在Google地圖上加載點。我已根據這一關這裏介紹的代碼:http://forums.asp.net/t/1826865.aspx?Google+Maps+populated+from+SQL通過Google地圖的JSON結果循環的問題
這裏是我如何添加點:
function plotpoints() {
clearMarkers();
var responseText = $.ajax(
{
type: "POST",
url: "mapdata.aspx?state=California&city=Los%20Angeles",
data: "",
success: function (msg) {
if (msg != "") {
serverResponseObj = msg;
if ((serverResponseObj) && (serverResponseObj.points)) {
for (i in serverResponseObj.points) {
var marker = new google.maps.Marker({
name: serverResponseObj.points[i].name,
position: new google.maps.LatLng(serverResponseObj.points[i].lat, serverResponseObj.points[i].long), map: map });
var markerContent = "<span style=\"font-weight:bold;\">" + serverResponseObj.points[i].name + "</span>";
markerContent += "<br/>";
markerContent += serverResponseObj.points[i].MDesc + " member" + ((serverResponseObj.points[i].MDesc == 1) ? "" : "s");
markerContent += "<br/>";
markerContent += "<a href=\"League.aspx?id=" + serverResponseObj.points[i].id + "\">Go to League Page</a>";
var infoWindow = new google.maps.InfoWindow({ content: markerContent });
markersArray.push(marker);
marker.addListener('click', function() {
infoWindow.open(marker.get('map'), marker) });
}
}
}
addPolys();
}
});
}
標記被正確添加。但是,InfoWindow存在一個問題。所有的點打開相同的InfoWindow,使用相同的文本....
任何想法?
'marker.addListener' - 查看原文或許? 'google.maps.event.addListener' –
當你應該將它添加到'google.maps'中時,你要向'marker'添加一個事件監聽器 - 因此它們都得到相同的事件處理器(最後一個) .. –
使用函數閉包將infowindow內容與每個副本的標記相關聯 - [概念證明小提琴](http://jsfiddle.net/geocodezip/4xstxzez/2/) – geocodezip