Google地图:将参数绑定到点击事件

时间:2017-04-10 18:42:48

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

我使用Google Maps JavaScript API将标记添加到地图上。对于每个标记,我在每个标记上添加一个监听器。以下是我的代码。

for (var i = 0; i < markers.length; i++) {
    var marker = addMarker(markers[0]); //The addMarker function contains the code to add the marker

    marker.addListener('click', function() {
        console.log(i);
    });
}

我还想将i param绑定到click事件,以便在它触发时我可以使用i中的值执行某些操作(我将此更改为另一个变量后来)。然而,我点击控制台上的哪个标记始终会记录i的最后一个值

因此,对于循环的每次迭代,它都会覆盖click事件的回调。有谁知道我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你想使用闭包,你可以这样做。当您执行单击时,这将保留i

请注意,下面只是一个指出这个想法的例子。

&#13;
&#13;
var markers = ["marker1","marker2","marker3"];
for (var i = 0; i < markers.length; i++) {

      var marker = addMarker(markers[i]); //The addMarker function contains the code to add the marker
      (function(_i,marker){
        marker.addEventListener('click', function() {
            alert(_i);
       });
      })(i,marker)
}

function addMarker(marker){
    var elem = document.createElement('div');
    elem.id = marker;
    elem.textContent = marker;
    document.body.appendChild(elem);
    return elem;
}
&#13;
&#13;
&#13;