gmaps.js - 为每个标记添加单击功能

时间:2014-04-26 19:21:20

标签: javascript google-maps google-maps-api-3

我在我正在构建的一个小项目中使用Gmaps.js api,并在for循环中添加点击事件。这是代码:

for(var i = 0; i < number; i++) {
        var entryTime = data[i].datetime;
        map.addMarker({
            lat: data[i].lat,
            lng: data[i].lng,
            click: function(){
                alert(entryTime);
            }
        });
}

然而,当点击标记时,我总是得到最后一个数据元素。如何将此功能绑定到每个标记?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。 entryTime变量在click处理程序之外定义和更改;当点击处理程序被触发时,它将警告分配给entryTime的最后一个值。

一种解决方案是创建一个闭包,以便在创建闭包时创建变量及其值的副本。

for (var i = 0; i < number; i++) {
    map.addMarker({
        lat: data[i].lat,
        lng: data[i].lng,
        click: (function (t) {
            return function () {
                alert(t);
            };
        })(data[i].datetime)
    });
}

详情are explained in this question