我在名为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])
,但该值为{{ 1}},是函数的本地,所以当我点击标记时,该函数不起作用,因为它不知道window
是什么。这是正确的吗?
编辑:正如geocodezip指出的那样,window
不存在。所以我将其更改为infowindow
,同时将最后一个参数更改为infowindowList[window].open(map,markerList[window]);
,因为它应该是一个标记作为一个arg,而不是另一个infowindow。
答案 0 :(得分:2)
您收到错误“infowindow未定义”,因为未定义infowindow变量。它肯定没有在您发布的代码中定义。
通常它是全局定义的,因此有一个infowindow(v2默认行为),但在这种情况下你仍然需要定义它并创建它(通常在onload函数中)。