【发布时间】:2012-07-02 22:26:06
【问题描述】:
我在名为markerList 的字典中有一个 Google Maps API 标记列表。所有这些都被放置在地图上。然后我创建了一个包含我所有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],因为它应该是一个作为arg的标记,而不是另一个信息窗口。
【问题讨论】:
标签: javascript google-maps google-maps-api-3 google-maps-markers