1

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

4

1 回答 1

2

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

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

工作示例

于 2012-07-02T22:54:50.393 回答