【问题标题】:Infowindow opens only for last JSON record信息窗口仅针对最后的 JSON 记录打开
【发布时间】:2012-05-30 21:30:23
【问题描述】:

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

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

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

【问题讨论】:

  • 没关系,我很笨,没有先看到它。我在循环之后添加了点击事件。我需要做的就是在 for 循环中放置闭包。

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


【解决方案1】:

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

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

即闭包必须在循环内

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多