Google maps infowindows problems with the for()



我正在尝试使用for()使用不同内容的infowdow,但它不起作用。这是我的代码:

var infowindow=[];
var myMarker=[];
var marker=[];
for (i = 0; i < dl.length; i++) {
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]);
    marker[i] = new google.maps.Marker({
    position: myMarker[i],
    map: map
  }); 
}
for (var i = 0; i < dl.length; i++) {

google.maps.event.addListener(marker[i],'mouseover', function(){
    infowindow[i] = new google.maps.InfoWindow({
    content:dl[i]
    });
  infowindow[i].open(map,marker[i]);
  });
  google.maps.event.addListener(marker[i],'mouseout',function() {
    infowindow[i].close();
  });
  google.maps.event.addListener(marker[i],'click',function() {
    alert("Y ahora te abriría otra pagina... si tuviera una"+i);
  });

}

第一个的一切都很酷,但是当我尝试使用事件听众时,它会变坏。

变量:dl[]lt[]ln[]之前是在初始初始化的。

InfowDindow无法正常工作。创建InfowDindow的单个副本(而不是维护数组),并在每个标记的鼠标浏览事件中使用InfowIndow.setContent()设置其内容。

编辑:您的响应中的解决方案将起作用,或者这是一个更简洁的解决方案:

var myMarker=[];
var marker;
var infoWindow = new google.maps.InfoWindow();
for (i = 0; i < dl.length; i++) {
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]);
    marker = new google.maps.Marker({
    position: myMarker[i],
    map: map
  }); 
  (function(msg) {marker.addListener('mouseover', function() {
    infoWindow.setContent(msg);
    infoWindow.open(marker.get('map'), marker);
    });
  })(dl[i]);
  marker.addListener('mouseout', function() {
    infoWindow.close();
  });
}

我结束了这样做,并且效果很好

var myMarker=[];
var marker;
for (i = 0; i < dl.length; i++) {
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]);
    marker = new google.maps.Marker({
    position: myMarker[i],
    map: map
  }); 
  attachSecretMessage(marker, dl[i]);
}

function attachSecretMessage(marker, secretMessage) {
  var infowindow = new google.maps.InfoWindow({
    content: secretMessage
  });
  marker.addListener('mouseover', function() {
    infowindow.open(marker.get('map'), marker);
  });
  marker.addListener('mouseout', function() {
    infowindow.close();
  });
  }

相关内容

最新更新