【发布时间】:2011-10-26 01:16:42
【问题描述】:
我目前正在使用以下代码,使用他们的 API 在 Google 地图上放置多个标记。
我遇到的问题是多个信息窗口不起作用(仅显示最后一个)。
在 SO 上有很多像我这样的问题。实际上提出了一大堆问题:-)
只是一个例子:Trying to bind multiple InfoWindows to multiple Markers on a Google Map and failing
我的问题的解决方案很简单:只需将点击侦听器附在一个(匿名)函数中即可。
但是我不明白为什么我的解决方案不起作用(将标记和信息窗口保存在数组中,而不仅仅是一个变量)。
var markers = [];
var infowindows = [];
// add shops or malls
for (var key in data.markers) {
if (data.markers.hasOwnProperty(key)) {
infowindows[key] = new google.maps.InfoWindow({
content: data.markers[key].infowindow
});
markers[key] = new google.maps.Marker({
position: new google.maps.LatLng(data.markers[key].location.lat, data.markers[key].location.lng),
map: map,
flat: true,
title: data.markers[key].name,
draggable: false
});
var iconFile = 'http://maps.google.com/mapfiles/ms/icons/'+marker_color+'-dot.png';
markers[key].setIcon(iconFile);
google.maps.event.addListener(markers[key], 'click', function() {
infowindows[key].open(map, markers[key]);
});
}
}
所以......我不知道如何获得解决方案如何让它与一些功能一起工作以封闭监听器(虽然它应该工作,还没有测试过但会),但我想知道如果我将标记和信息窗口添加到数组中,它不会起作用的原因。
【问题讨论】:
标签: google-maps google-maps-api-3