百度地图之循环标注

本文介绍了一种在使用百度地图API时遇到的标注问题及其解决方案。通过为每个标注添加特定的信息窗口,确保了所有标注内容正确显示,避免了内容被覆盖的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在使用百度地图api过程中,需要给相应的点添加标注,当我将获取的数据使用循环的方式标注出来后,问题就出现了,

所有的标注内容一样,被最后的数据给覆盖了,查到许多的解决方案,其中我认为更符合我的需求的拿出来分享。

        答案源于这里:戳吧!

        直接上标注代码:

 

     function addMark(){
            var json = ${map};//后台数据
            var opts = {
			  width : 250,    
			  height: 120,     
			  title : "船舶信息" , 
			  enableMessage:false
	       }
            for(var i=0;i<json.length;i++){
                var content =
				"<div class='metle'><table>"+
			        "<tr><td>经度:"+json[i].longitude+"</td></tr>"+
			        "<tr><td>纬度:"+json[i].latitude+"</td></tr>"+
			        "<tr><td>时间:"+json[i].utc+"</td></tr>"+
				"</table></div>";                
                var myIcon = new BMap.Icon("${base}/lib/images/1.png", new BMap.Size(15,15));//自定义icon
                var infoWindow = new BMap.InfoWindow(content,opts);//创建信息窗口
                var mark = new BMap.Marker(new BMap.Point(json[i].longitude,json[i].latitude),{icon:myIcon});  // 创建标注
                mark.infoWindow = infoWindow;//关键点!给当前标注添加属性保存window信息
		mark.addEventListener("mouseover",function(e){ this.openInfoWindow(e.target.infoWindow);});//回调对应的信息
	        map.addOverlay(mark);
            }
    }
至于addMark()函数直接放在initMap()中调用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值