0

表示しようとしています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);
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 に答える