关于百度地图循环加载marker并添加多个信息窗口问题

    最近在使用百度地图加载多个标记点和为其添加对应的信息窗口的使用遇到信息窗口展示的内容始终是最后一个的窗口信息;

之前使用的代码如下:

//请求百度地图的标记点的坐标

for(var i = 0 ; i < this.baiduMapMarker.length;i++){

var titleName = this.baiduMapMarker[i].GeoHazardPointCode

//坐标转换

//创建标记点

var marker = new BMapGL.Marker(new BMapGL.Point(this.baiduMapMarker[i].GPS_Lon, this.baiduMapMarker[i].GPS_Lat));

map.addOverlay(marker);

//创建信息窗口

var opts ={

width:200,

height:50,

title:titleName

};

var infoWindow = new BMapGL.InfoWindow("地理位置:"+that.baiduMapMarker[i].NAME,opts);

//添加点的点击事件

marker.addEventListener('click',function(e){

map.openInfoWindow(infoWindow,new BMapGL.Point(that.baiduMapMarker[i].GPS_Lon,that.baiduMapMarker[i].GPS_Lat));

})

}


更改:代码

//请求百度地图的标记点的坐标

for(let  i = 0 ; i < this.baiduMapMarker.length;i++){

let titleName = this.baiduMapMarker[i].GeoHazardPointCode

//坐标转换

//创建标记点

let marker = new BMapGL.Marker(new BMapGL.Point(this.baiduMapMarker[i].GPS_Lon, this.baiduMapMarker[i].GPS_Lat));

map.addOverlay(marker);

//创建信息窗口

let opts ={

width:200,

height:50,

title:titleName

};

let infoWindow = new BMapGL.InfoWindow("地理位置:"+that.baiduMapMarker[i].NAME,opts);

//添加点的点击事件

marker.addEventListener('click',function(e){

map.openInfoWindow(infoWindow,new BMapGL.Point(that.baiduMapMarker[i].GPS_Lon,that.baiduMapMarker[i].GPS_Lat));

})

}

将var 改为let就可以了。。。。个人感觉这个很坑

运行结果:


你可能感兴趣的:(关于百度地图循环加载marker并添加多个信息窗口问题)