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

来源:互联网 发布:spring5.0高级编程 编辑:程序博客网 时间:2024/05/01 01:37

今天应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);                                }


最后的效果如下:


0 0