我正在尝试使用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();
});
}