【问题标题】:Google Maps API V3 infoWindow - All infoWindows displaying same contentGoogle Maps API V3 infoWindow - 所有 infoWindows 显示相同的内容
【发布时间】:2011-06-21 07:18:39
【问题描述】:

在我的页面中,纬度、经度和信息窗口内容存在于名为 obj 的对象数组中。

所以如果我需要第一个对象的属性纬度,我可以调用 obj[0].latitude。

每个对象的 infoWindow 内容存储在 obj[i].text 中。

我正在使用下面的循环遍历 lat & long 值并显示标记和 infoWindows。

 for (x=1; x  var marker2  = new google.maps.Marker({
    position : latlng1,
    map  : map,
    icon     : prevIcon
    });

  infowindow = new google.maps.InfoWindow();

  info = obj[x].text;

   google.maps.event.addListener(marker2, 'mouseover', function() {
       infowindow.setContent(info);
       infowindow.open(map, this);
      });

}

上面的代码有效,但是所有 infoWindows 都显示了最后一个 obj[i].text 的内容。

如何将特定 infoWindow (obj[x].text) 的 infoWindow 内容仅关联到该 infoWindow 实例?

如果有人可以在不使用 jQuery 或任何其他外部库的情况下指出解决方案,那就更好了。

谢谢,

【问题讨论】:

  • Javascript 没有块作用域,您在每个循环中写入相同的变量。最后,只有 1 个 info 变量,包含您最后一个 obj 的文本。
  • 你能提供一些工作演示吗?也许在jsfiddle.net
  • 很抱歉,该页面包含用于从 MySQL 表中获取数据的 PHP 代码。它不适用于 jsfiddle :(

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


【解决方案1】:

应该会让你走得很远。

function attachMarker( data ) {

    var latLng = new google.maps.LatLng( data.latitude, data.longitude );

    var marker = new google.maps.Marker({
        position : latLng,
        map      : map, // global variable?
        icon     : prevIcon // global variable?
    });

    google.maps.event.addListener(marker, 'mouseover', function() {
       infowindow.setContent( data.text );
       infowindow.open(map, this);
    });

    // add marker here.

}

// afaik, you only need 1 instance of InfoWindow if you only change content.
var infowindow = new google.maps.InfoWindow();

var i = obj.length;
while ( i-- ) {
    attachMarker( obj[ i ] );
}

【讨论】:

    【解决方案2】:

    BGerrissen 的上述评论帮助很大。

    我设法在 info 变量上实现了函数闭包。

    以下 Google 网上论坛帖子介绍了如何操作。

    https://groups.google.com/group/google-maps-api-for-flash/browse_thread/thread/befeb9bf2d1ebcc9

    谢谢大家:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2012-01-06
      相关资源
      最近更新 更多