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