vue开发百度地图很不兼容,如果直接循环添加事件会覆盖前面的事件,现采用网上说的一种闭包方式
for(var i =0;i<_this.pointArray.length;i++){
var marker1 = new BMap.Marker(new BMap.Point(_this.pointArray[i].lng,_this.pointArray[i].lat));
marker1.setLabel(new BMap.Label(_this.pointArray[i].name));
//添加name,后面再target获取
marker1.name = _this.pointArray[i].name
markers.push(marker1)
map.addOverlay(marker1);
const __this = _this;
//闭包
(function(){
marker1.addEventListener("click", function(e){
在事件e中获取
var info = {}
info.lng = e.target.point.lng
info.lat = e.target.point.lat
info.name = e.target.name
//添加给全局变量
__this.addArray.push(info)
});
})()
}
如果还有更好的办法,可以评论告诉我哦