关于将infowindow分配给地图中的每个标记,我遇到了问题。
JS代码:
for (i=0;i<location.length;i++){
var id = location[i][0];
var name = location [i][1];
var pos = new google.maps.LatLng(location[i[3],location[i][4]);
var contentString = id;
var infowindow = new google.maps.InfoWindow({content:contentString});
var marker= new google.maps.Marker({position: pos, map: map, title: id});
marker.addListener('click', function() { infowindow.open(map, this);
});
问题是我的点击处理程序会显示相同的&#34; id&#34;对于每个标记(显示的ID是我的数据库中我的LAST记录的ID)。 有没有办法显示每个标记的每个信息窗口?
答案 0 :(得分:17)
假设从数据库中提取并填充位置数组...
首先你有一个错误:
var pos = new google.maps.LatLng(location [i [3],location [i] [4]);
你应该修改你的括号并这样说:
var pos = new google.maps.LatLng(location [i] [3],location [i] [4]);
以下是一个例子:
我尽可能多地关注你的例子,因为你没有指定一个数组并且创建了一个与你的数组相对应的数组(如果你想要你的名字,你可以添加一个列)
<强>循环强>:
for (var i = 0; i < location.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(location[i][1], location[i][2]),
map: map,
title: location[i][0]
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(location[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
在循环之前声明你的infoWindow并在事件中提取它
<强>信息窗口强>:
var infowindow = new google.maps.InfoWindow();
点击活动:
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(location[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
答案 1 :(得分:0)
ServiceB