for (var i = 0; i < locs.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locs[i][0], locs[i][1])
, map: map
, title: "Hello World!"
, icon: iconImage
, clickable: true
});
marker.info = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(marker, 'click', function () {
marker.info.open(map, marker);
});
}
所有标记都在地图上很好地显示,但问题是当我点击查看信息窗口时 - 信息窗口始终显示在同一个标记上。问题是什么?
答案 0 :(得分:0)
由于你的标记变量不在foreach循环范围之外,我认为map api没有正确跟踪它们。使用标记来保存数组中的活动标记时,这是一种很好的做法,这样您可以稍后处理它们(或以其他方式管理它们)。尝试这样的事情:
var markers = Array(); //make sure this is scoped properly
for (var i = 0; i < locs.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locs[i][0], locs[i][1])
, map: map
, title: "Hello World!"
, icon: iconImage
, clickable: true
});
var index = markers.push(marker) -1;
markers[index].info = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(markers[index], 'click', function () {
marker.info.open(map, marker);
});
}