var locations=[
['Name0',0.0,0.0,0],['Name1',1.0,1.0,0],['Name2',2.0,2.0,0],['Name3',3.0,3.0,0],['Name41',4.0,4.0,1],['Name55',5.0,5.0,0],['Name6',6.0,6.0,1],['Name7',7.0,7.0,0],['Name8',8.0,8.0,1],['Name9',9.0,9.0,1]  ];
 
for (var i = 0; i < locations.length; i++) {
    var beach = locations[i];
    var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
    //alert(beach[1]+","+beach[2]);
    var er = new google.maps.Marker({
        position: myLatLng, 
        map: map,
        icon: (beach[3]==0?image:image2),
        title:beach[0]
    });
google.maps.event.addListener(er, 'click', function() {
   alert(er.getPosition());//点击任意一个overlay结果都是(9,9)。为何??
   });
    }

解决方案 »

  1.   

     
    for (var i = 0; i < locations.length; i++) {
    (function(i){
      var beach = locations[i];
      var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
      //alert(beach[1]+","+beach[2]);
      var er = new google.maps.Marker({
      position: myLatLng, 
      map: map,
      icon: (beach[3]==0?image:image2),
      title:beach[0]
      });
    google.maps.event.addListener(er, 'click', function() {
    alert(er.getPosition());//点击任意一个overlay结果都是(9,9)。为何??
    });
    })(i);
      }试试看
      

  2.   

    非常感谢。
    有个高手也回复我,它的方法也行。跟您共享一下
    答案如下:
    主要是使用了 js 闭包。导致的。改成这样试试
    google.maps.event.addListener(er, 'click', function() {
    var m = arguments[0];
    return function() {
    alert(m.getPosition());
    }
    }.call(er, er));另请问js闭包为何会导致这种现象?