1

嗨 Stackoverflow 人,

我正在为谷歌地图标记实现 MarkerCluster 函数。我遇到了一个问题,看起来很简单,但我很难找到它。

该脚本获取通过 Django 模板传递的 json 字符串。显示效果很好,但每个标记的链接都是相同的(json 列表的最后一个)。但是代码对我来说似乎很直接,每次迭代都会创建一个新的 href。这不正确吗?

当我运行脚本时,所有链接都重定向到 json 列表中的最后一项。我该如何解决?

var data = {{ project_data|safe }};
var markers = [];
for (var i = 1; i < {{ len|safe }}; i++) {
    var dat = data[i];
    var latLng = new google.maps.LatLng(dat.lat, dat.lng);
    var marker = new google.maps.Marker({
        position: latLng,
        title: dat.name,
        });

    google.maps.event.addListener(marker, 'click', function() {
      window.location.href = "../projects/" + dat.link;  
    });

    markers.push(marker);
}

感谢您的帮助和建议。

4

1 回答 1

4

我认为这是变量范围问题,只需替换它

google.maps.event.addListener(marker, 'click', function() {
  window.location.href = "../projects/" + dat.link;  
});

有以下

(function(dat) {
    google.maps.event.addListener(marker, 'click', function() {
        window.location.href = "../projects/" + dat.link;  
    });
})(dat);

希望它能解决问题。

于 2012-06-11T02:15:40.113 回答