Google Maps API V3 infowindow错误:“infowindow未定义”

时间:2012-07-02 22:26:07

标签: javascript google-maps google-maps-api-3 google-maps-markers

我在名为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。

1 个答案:

答案 0 :(得分:2)

您收到错误“infowindow未定义”,因为未定义infowindow变量。它肯定没有在您发布的代码中定义。

通常它是全局定义的,因此有一个infowindow(v2默认行为),但在这种情况下你仍然需要定义它并创建它(通常在onload函数中)。

working example