百度地图api同时标注多个点但信息框一样
我点击一个按钮“重庆市”进去希望在地图上显示出重庆市的一些符合规则的企业,当然是有很多个的,每个企业一个标注(就是一个红点),点击标注弹出一个框显示企业的详细信息。。问题...
我点击一个按钮“重庆市” 进去 希望在地图上显示出重庆市的一些符合规则的企业,当然是有很多个的,每个企业一个标注(就是一个红点),点击标注 弹出一个框 显示企业的详细信息。。 问题来了。。标注可以循环添加多个 但是 那个弹出框却永远都是一个, 也就是说 不管点击哪个标注 弹出的都是一个弹出框 显示的内容都是一样的,都是最后一个企业的信息。。。
展开
展开全部
/**
* 添加标记
* @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 = "<h4 style='margin:0 0 5px 0;padding:0.2em 0'>"+e.target.dataCont.name+"</h4>" +
"<img style='float:right;margin:4px' id='imgDemo' src='"+e.target.dataCont.viewImg+"' width='139' height='104' title='"+e.target.dataCont.name+"'/>" +
"<p style='margin:0;line-height:1.5;font-size:13px;text-indent:2em'>"+e.target.dataCont.context+"</p>" +
"</div>";
var infoWindow = new BMap.InfoWindow(viewWin);
this.openInfoWindow(infoWindow);
//图片加载完毕重绘infowindow
document.getElementById('imgDemo').onload = function (){
infoWindow.redraw();//防止在网速较慢,图片未加载时,生成的信息框高度比图片的总高度小,导致图片部分被隐藏
}
});
}
}
可以这样,先把生成标注的json数据直接存进marker对象.添加marker的点击监听,触发监听事件时会拿到marker对象本身,从里面可以获取之前我们存进去的json数据,然后拿这个json数据直接生成弹窗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百度的API只能做这些了,要想一次性全部加载各个企业的信息框,得自己去实现,难度应该也不大,写个脚本就可以
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好,该问题不属于标注认领问题,给您带来了不便,非常抱歉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询