0

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

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

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);
4

1 回答 1

0

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

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);
}

即闭包必须在循环内

于 2012-05-25T08:15:03.590 回答