您的位置:首页 > 其它

百度地图中实现历史轨迹显示为BMap.InfoWindow添加多个不同时间点但相同经纬度点的信息

2016-12-03 20:37 811 查看
今天应boss要求实现巡更,既然是巡更,那么几个点在轮巡,那么显示历史轨迹时后面时刻的点的信息会覆盖前面时刻的信息,如何在一个marker上显示不同时间点的信息呢??

 主要时取数据时的循环问题,后台放回的数据不变,在前台进行判断如果第i个返回的点的坐标已经在地图上显示,则显示此点的InfoWindow时,在原来的信息上追加新的信息(保留原来的信息)。因为可能重复取数据等等问题,经验不够绕来绕去终于解决了。

代码如下:

var pointarr=new Array();
for(var i = 0; i < msg.hislist.length; i++){
//alert(msg.hislist[i].point_id);
if(pointarr.indexOf(i)>-1){
//alert('跳出循环');//判断是否已经已经显示过该点的信息,避免重复。
continue;}
var marker=new BMap.Marker(
new BMap.Point(msg.hislist[i].GPS_LONG,msg.hislist[i].GPS_LAT)
);
text="<font size='2' color='#0066FF'>定位位置:</font> "+"<font size='2'>"+msg.hislist[i].address+"</font>"+"<hr style='color:#0066FF'><font size='2' color='#0066FF'>巡更人员:</font> "+"<font size='2'>"+msg.hislist[i].name+"</font>"+"<hr style='color:#0066FF'><font size='2' color='#0066FF'>定位时间:</font> "+"<font size='2'>"+msg.hislist[i].GPS_UTC+"</font>"+"<hr style='color:#0066FF'>";
for (var j=i+1;j< msg.hislist.length; j++){
if(msg.hislist[j].point_id==msg.hislist[i].point_id){
pointarr.push(j);//将已经显示过的点保存在一个数组中,这里每个点的point_id就代表巡更点的编号,也就是将相同巡更点的历史轨迹信息保存在同一个数组中
var textadd="<font size='2' color='#0066FF'>巡更人员:</font> "+"<font size='2'>"+msg.hislist[j].name+"</font>"+"<hr style='color:#0066FF'><font size='2' color='#0066FF'>定位时间:</font> "+"<font size='2'>"+msg.hislist[j].GPS_UTC+"</font>"+"<hr style='color:#0066FF'>";
text=text+textadd;
}
}
var infoWindow = new BMap.InfoWindow(text);
marker.infoWindow=infoWindow;
marker.addEventListener("click",function(e){
this.openInfoWindow(e.target.infoWindow)
});
maplet.addOverlay(marker);
}


最后的效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐