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

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


最后的效果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值