如何在百度地图里面添加覆盖物,并且对每个覆盖物添加点击之后弹出信息框的功能

2021-11-16 科技 154阅读
/**
* 添加标记
* @param [{id:主键,name:名称,lon:经度,lat:纬度,icon:图标,context:弹窗内容,viewImg:弹窗图片},...] data
*/
function addMar(data){
for(var i = 0; i < data.length; i++){
var marker = new BMap.Marker(new BMap.Point(data[i].lon, data[i].lat),{icon:new BMap.Icon(data[i].icon, new BMap.Size(50,50))});  // 创建标注
marker.setTitle(data[i].name);
marker.dataCont = data[i];

map.addOverlay(marker);

marker.addEventListener("click", function(e){   
var viewWin = ""+e.target.dataCont.name+"" + 
"" + 
""+e.target.dataCont.context+"

" + 
"
";
var infoWindow = new BMap.InfoWindow(viewWin);
this.openInfoWindow(infoWindow);
//图片加载完毕重绘infowindow
document.getElementById('imgDemo').onload = function (){
infoWindow.redraw();//防止在网速较慢,图片未加载时,生成的信息框高度比图片的总高度小,导致图片部分被隐藏
}
});
}
}

可以这样,先把生成标注的json数据直接存进marker对象.添加marker的点击监听,触发监听事件时会拿到marker对象本身,从里面可以获取之前我们存进去的json数据,然后拿这个json数据直接生成弹窗

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com