【发布时间】:2016-02-23 07:57:38
【问题描述】:
我正在尝试使用 JSON 提要在 Google 地图上加载点。我基于这里提供的代码:http://forums.asp.net/t/1826865.aspx?Google+Maps+populated+from+SQL
这是我添加分数的方式:
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 存在问题。所有点都打开同一个信息窗口,带有相同的文本....
有什么想法吗?
【问题讨论】:
-
marker.addListener- 可以查看原件吗?google.maps.event.addListener -
底线是向
marker添加一个事件侦听器,而您应该将它添加到google.maps- 所以它们都得到相同的事件处理程序(最后一个)..跨度> -
使用函数闭包将信息窗口内容与每个重复项的标记相关联 - proof of concept fiddle
-
感谢 geocodezip。做到了!
标签: javascript json google-maps for-loop google-maps-markers