Google maps api 3 谷歌地图API标记
我正在尝试添加一些标记,这些标记的位置(纬度和经度)是从数据库中获取的,我可以将它们添加到地图中,但是Google maps api 3 谷歌地图API标记,google-maps-api-3,google-maps-markers,Google Maps Api 3,Google Maps Markers,我正在尝试添加一些标记,这些标记的位置(纬度和经度)是从数据库中获取的,我可以将它们添加到地图中,但是 google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); }); 方法仅向最后一个标记(即数据库中的最后一个城市)添加事件侦听器 如何分别为每个标记添加Listner 这是我的全部代码 ==========================================
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
方法仅向最后一个标记(即数据库中的最后一个城市)添加事件侦听器
如何分别为每个标记添加Listner
这是我的全部代码
=============================================================================
result contains List<City>
function OnSuccess(result) {
if (result) {
for (var i = 0; i < result.length; i++) {
alert(result[i].lat);
var myCenter= new google.maps.LatLng(result[i].lat,result[i].log);
var marker=new google.maps.Marker({
position:myCenter});
var infowindow = new google.maps.InfoWindow({
content: result[i].desc
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
marker.setMap(map);
}
}
}
结果包含列表
函数OnSuccess(结果){
如果(结果){
对于(变量i=0;i
您需要关闭。您正在做的是为每个标记重新定义click handler函数。单击时,所有标记将执行此行:
infowindow.open(map,marker);
使用“infowindow”、“map”和“marker”的值。因为标记是在循环中创建的,所以它总是指最后一个标记
而且每次都会重新定义infowindow
。因此,内容将始终是最后一个结果的内容
我通常是这样做的
// create this outside of your loop
var infowindow = new google.maps.InfoWindow({
content: ""
});
for (var i = 0; i < result.length; i++) {
var myCenter= new google.maps.LatLng(result[i].lat,result[i].log);
var marker=new google.maps.Marker({
position: myCenter,
map: map
});
bindInfoWindow(marker, map, infowindow, result[i].desc);
}
function bindInfoWindow(marker, map, infowindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(html);
infowindow.open(map, marker);
});
}
//在循环外部创建此
var infowindow=new google.maps.infowindow({
内容:“”
});
对于(变量i=0;i