Infowindow仅针对最后的JSON记录打开

时间:2012-05-24 09:52:26

标签: json google-maps google-maps-markers infowindow

我正在尝试显示InfoWindow,但问题是我只能看到JSON的最后一条记录。

onmouseover显示其他2个标记的标题,但它们的InfoWindow未打开。请建议如何修复此代码

var infoWindow = new google.maps.InfoWindow();
for (var i = 0, length = json.length; i < length; i++) {
  var data = json[i],
  latLng = new google.maps.LatLng(data.lat, data.lng); 

  var marker = new google.maps.Marker({
  position: latLng,
  map: map,
  title: data.title
  });
}

(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
 });

})(marker, data);

1 个答案:

答案 0 :(得分:0)

没关系,我是非常愚蠢的,没有先看到它。我在循环后添加了click事件。我需要做的就是这个。

var infoWindow = new google.maps.InfoWindow();

for (var i = 0, length = json.length; i < length; i++) {
var data = json[i],
latLng = new google.maps.LatLng(data.lat, data.lng); 

var marker = new google.maps.Marker({
position: latLng,
map: map,
title: data.title
});

(function(marker, data) {

google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
});

})(marker, data);
}

即。闭包必须在循环内