var adds=[
{
Latitude: "39.95037",
Longitude: "116.488747",
LocationName: "北京市朝阳区农展馆北路78号",
},
{
Latitude: "39.97037",
Longitude: "116.498747",
LocationName: "78号",
},
{
Latitude: "39.93037",
Longitude: "116.478747",
LocationName: "北京市朝阳区",
},
]var map = new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(116.498747, 39.97037), 15);
for(var i in adds)
{
var point = new BMap.Point(adds[i].Longitude, adds[i].Latitude);
var er = new BMap.Marker(point);
var infoWindow = new BMap.InfoWindow(adds[i].LocationName);
er.addEventListener("click", function(){          
    this.openInfoWindow(infoWindow);
    });
map.addOverlay(er);
}执行点击事件时,每个元素的LocationName都是相同的,该怎么处理?js

解决方案 »

  1.   

    for(var i in adds)
    {
    var point = new BMap.Point(adds[i].Longitude, adds[i].Latitude);
    var er = new BMap.Marker(point);
    var infoWindow = new BMap.InfoWindow(adds[i].LocationName);
    (function(i){
    er.addEventListener("click", function(){          
        this.openInfoWindow(infoWindow);
        });
    })(i);
    map.addOverlay(er);
    }
      

  2.   

    修正,应如下:
    for(var i in adds)
    {
    var point = new BMap.Point(adds[i].Longitude, adds[i].Latitude);
    var er = new BMap.Marker(point);
    var infoWindow = new BMap.InfoWindow(adds[i].LocationName);
    (function(infoWindow ){
    er.addEventListener("click", function(){          
        this.openInfoWindow(infoWindow);
        });
    })(infoWindow);
    map.addOverlay(er);