我正在尝试使用JSON Feed在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存在问题。所有的点打开相同的InfoWindow,使用相同的文本....
有什么想法吗?
答案 0 :(得分:0)
我无法确定究竟是什么导致了您的问题,但代码可以稍微清理一下,这可能有助于解决问题。
当使用for ...时,您也可以获得原型对象,仔细检查您是否正在使用对象本身的属性。为此,请使用以下命令包装循环内容:
if (serverResponseObj.points hasOwnProperty(i)) {
...
}
此外,每次循环运行时,您都会重新声明变量,它更简洁,并且可以更好地将声明移到外面。
var marker, markerContent, infoWindow;
for (i in serverResponseObj.points) { ... }
将它们一直移动到功能块的顶部将更准确 描述它实际执行的方式,通常是推荐的。
我会进行这些更新,然后再看看它 特别是关于hasOwnPropery()的问题,这个问题可能会像修复后的那样神秘地消失。