Google Maps API V3 信息窗口错误:“信息窗口未定义”

Google Maps API V3 infowindow error: "infowindow not defined"

本文关键字:窗口 信息 信息窗 未定义 错误 API Google Maps V3      更新时间:2023-09-26

我在一个名为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],因为它应该是一个标记作为参数,而不是另一个信息窗口。

您收到错误"未定义信息窗口",因为未定义信息窗口变量。 它当然不是在您发布的代码中定义的。

通常它是全局定义的,因此有一个信息窗口(v2 默认行为),但在这种情况下,您仍然必须定义并创建它(通常在 onload 函数中)。

工作示例