我的字典中有一个 Google Maps API 标记列表,名为markerList
. 所有这些都被放置在地图上。然后我创建一个我所有的数组infowindow
。然后我需要addListener
为它们中的每一个设置,以便在地图上单击标记时,它会调用infowindow.open
正确的地图和信息窗口。
不幸的是,当我单击标记时,我在 firebug 控制台中收到以下错误:
infowindow is not defined
infowindow.open(map,infowindowList[window]);
这是我的代码:
var infowindowList = {};
for (var aMarker in markerList){
infowindowList[aMarker] = new google.maps.InfoWindow({
content: "This is a test!",
size: new google.maps.Size(50,50)
});
console.log(infowindowList[aMarker]);
}
console.log("Done creating infowindowList...\n...Adding listeners");
for (var window in infowindowList){
google.maps.event.addListener(markerList[window], 'click', function() {
// infowindow.open(map,infowindowList[window]); // wrong, see Edit
infowindowList[window].open(map,markerList[window]);
});
console.log("added listener for window: ", infowindowList[window]);
}
我认为这是因为在google.maps.event.addListener(markerList[window]...
函数中,我将要在单击时运行的函数注册为infowindow.open(map,infowindowList[window])
,但是该值 ,window
是函数的本地值,因此当我单击标记时,该函数不起作用,因为它不知道是什么window
。那是对的吗?
编辑:正如 geocodezip 指出的那样,infowindow
不存在。所以我把它改成了infowindowList[window].open(map,markerList[window]);
,也把最后一个参数改成了 ,markerlist[window]
因为它应该是一个作为参数的标记,而不是另一个信息窗口。