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);
});
}
}