2

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

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

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

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

  for (x=1; x<=obj.length; x++)
  {
      var latlng1 = new google.maps.LatLng(obj[x].latitude, obj[x].longitude);

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 或任何其他外部库的情况下指出解决方案,那就更好了。

谢谢,

4

2 回答 2

4

应该让你走得很远。

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 ] );
}
于 2011-02-04T12:03:36.453 回答
0

BGerrissen 上面的评论很有帮助。

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

以下 Google 网上论坛帖子说明了如何操作。

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

感谢大家 :)

于 2011-02-04T12:05:15.657 回答