我试图在循环中将侦听器添加到标记中,但是它不起作用。

分别添加它们时,它可以工作。像这样:

    google.maps.event.addListener(markersArr[0], 'click', function() {
        infoWindowArr[0].disableAutoPan=true;
        infoWindowArr[0].open(map,markersArr[0]);
    });

    google.maps.event.addListener(markersArr[1], 'click', function() {
        infoWindowArr[1].disableAutoPan=true;
        infoWindowArr[1].open(map,markersArr[1]);
    });


但是在添加循环时,单击标记不会弹出infoWindow。

        for (var u=0; u<2; u++){
             google.maps.event.addListener(markersArr[u], 'click', function() {
             infoWindowArr[u].disableAutoPan=true;
             infoWindowArr[u].open(map,markersArr[u]);
        });


谁能解释一下如何使其循环运行?

最佳答案

had the same situation and Engineer answered with an anonymous function wrapper。看起来像这样。与创建辅助功能相比,它更紧凑,但可读性更差。

    for (var u=0; u<2; u++){
      (function(u) {
         google.maps.event.addListener(markersArr[u], 'click', function() {
           infoWindowArr[u].disableAutoPan=true;
           infoWindowArr[u].open(map,markersArr[u]);
         });
      })(u);
    }

09-26 13:19