我目前正在使用以下代码通过Google Map API在地图上放置多个标记。
我的问题是出现了多个信息窗口不起作用的问题(只显示最后一个)。
这里有很多与我的问题类似的问题,实际上有大量的问题:
举个例子:尝试将多个InfoWindows绑定到Google Map上的多个标记并失败
我的解决方案有点简单:只需将点击监听器包含在(匿名的)函数中即可。
然而,我不明白为什么我的解决方案不起作用(将标记和信息窗口保存在数组中,而不是只有一个变量)。
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]);
});
}
}
所以...我不想得到如何通过一些函数来封装监听器并让它工作的解决方案(尽管它应该可以工作,但我还没有测试过,会测试),但我想知道如果我将标记和信息窗口添加到数组中,为什么它不起作用。