api谷歌地图javascript v3中的信息窗口

api谷歌地图javascript v3中的信息窗口,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,有这样的功能。它能用,没问题 function setIconsOnMap(arrIcons, pathIcon){ var arrLatLng=Array(); var markers=Array(); var infowindow=Array(); for (var i=0; i<arrIcons.length; i++){ arrLatLng[i]=new google.maps.LatLng(arrIcons[i]['geo lat'], arr

有这样的功能。它能用,没问题

function setIconsOnMap(arrIcons, pathIcon){
  var arrLatLng=Array();
  var markers=Array();
  var infowindow=Array();
  for (var i=0; i<arrIcons.length; i++){
    arrLatLng[i]=new google.maps.LatLng(arrIcons[i]['geo lat'],
      arrIcons[i]['geo lon']);
  }
  for (i=0; i<arrLatLng.length; i++){
    markers[i]=new google.maps.Marker({
      position: arrLatLng[i],
      map: map
    });
    markers[i].setIcon(pathIcon);
    infowindow[i]=new google.maps.InfoWindow({
      content: 'uuuu'
    });
    google.maps.event.addListener(markers[i], 'mouseover', function(){      
      alert('sss');
    });
  }
}
函数setIconsMap(arrIcons、pathIcon){
var arrLatLng=Array();
var markers=Array();
var infowindow=Array();
对于(var i=0;i

但是如果我尝试显示InfoWindow而不是alert(),则该函数无法工作

function setIconsOnMap(arrIcons, pathIcon){
  var arrLatLng=Array();
  var markers=Array();
  var infowindow=Array();
  for (var i=0; i<arrIcons.length; i++){
    arrLatLng[i]=new google.maps.LatLng(arrIcons[i]['geo lat'],
      arrIcons[i]['geo lon']);
  }
  for (i=0; i<arrLatLng.length; i++){
    markers[i]=new google.maps.Marker({
      position: arrLatLng[i],
      map: map
    });
    markers[i].setIcon(pathIcon);
    infowindow[i]=new google.maps.InfoWindow({
      content: 'uuuu'
    });
    google.maps.event.addListener(markers[i], 'mouseover', function(){      
      infowindow[i].open(map, markers[i]);
    });
  }
}
函数setIconsMap(arrIcons、pathIcon){
var arrLatLng=Array();
var markers=Array();
var infowindow=Array();
对于(var i=0;i
函数seticonsmap(arrIcons,pathIcon){
var arrLatLng=Array();
var markersArray=Array();
var infowindowArray=Array();

对于(var i=0;i而言,我不完全确定您试图做什么。 您只需要设置一个信息窗口,并在鼠标上方动态加载内容

每次只需使用一个标记并设置侦听器

您可能想尝试以下操作,但我不完全确定您想用代码做什么

google.maps.event.addListener(markers[i], 'mouseover', (function(event, index){   
  return function(){
   infowindow.content = infowindowArray[index];
   infowindow.open(map,this);
  }
});
可能会有帮助。

此侦听器

google.maps.event.addListener(markers[i], 'mouseover', function(){      
      infowindow[i].open(map, markers[i]);
    });
当事件发生时运行该函数。因此,您单击一个标记,API将运行该函数并尝试在
marker[i]
上打开
infoWindow[i]
。在运行时,
i
超出范围,或者是循环的最后一个值


一致地将infowindow链接到标记的正确方法是使用一个助手函数(通常称为
createMarker()
)作为代码。

如果我没有弄错,那么在触发鼠标悬停事件时,您的数组超出了范围,请将infowindow设置为标记属性,这样您就可以了(还应全局声明数组以供进一步参考)

var arrLatLng=Array();
var markers=Array();
函数SetIconsMap(arrIcons、pathIcon){

对于(var i=0;它的函数在文件中:all.jsOh,是的,它可以工作,但有一个错误。这是因为您的逻辑不正确。我正在修改此代码,然后进行检查。现在请尝试并告诉我。好的,谢谢您的帮助。您和stackoverflow的其他人给了我很多需要考虑的事情。我需要时间:)
google.maps.event.addListener(markers[i], 'mouseover', function(){      
      infowindow[i].open(map, markers[i]);
    });
var arrLatLng=Array();
var markers=Array();
function setIconsOnMap(arrIcons, pathIcon){
  for (var i=0; i<arrIcons.length; i++){
    arrLatLng[i]=new google.maps.LatLng(arrIcons[i]['geo lat'],
      arrIcons[i]['geo lon']);
  }
  for (i=0; i<arrLatLng.length; i++){
    markers[i]=new google.maps.Marker({
      position: arrLatLng[i],
      map: map
    });
    markers[i].setIcon(pathIcon);
    markers[i].infoWindow=new google.maps.InfoWindow({
      content: 'uuuu'
    });
    google.maps.event.addListener(markers[i], 'mouseover', function(){      
      this.infoWindow.open(map, this);
    });
  }
}