百度地图API 绘制轨迹历史

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  6     <style type="text/css">
  7         body, html {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
  8         #allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
  9     </style>
 10     <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
 11    <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=8PBGIzcngFtMIdnWIX9ZrBr2ZjWN0ejT"></script>
 12
 13     <title>车辆运行轨迹测试</title>
 14     </head>
 15 <body>
 16 <input id="allmap_value" value="" style="display:none;">
 17 <div id="allmap"></div>
 18 </body>
 19 </html>
 20 <script type="text/javascript">
 21 $(function(){
 22 //初始化
 23 drawGreenAddress(0,"red",4);
 24 //show_mycat($("#allmap_value").val(),list[index].Long,list[index].Lat);
 25 })
 26
 27     var timer;     //定时器
 28     var index = 0; //记录播放到第几个point
 29     var list = [
 30     {Long:106.652024,Lat:26.617221},
 31     {Long:106.652886,Lat:26.614185},
 32     {Long:106.652527,Lat:26.614314},
 33     {Long:106.652743,Lat:26.609469},
 34     {Long:106.654324,Lat:26.607531},
 35     {Long:106.65612,Lat:26.602556},
 36 ];
 37     var listLast = list.length-1;
 38     // 百度地图API功能
 39     var map = new BMap.Map("allmap");    // 创建Map实例
 40     map.addControl(new BMap.NavigationControl());
 41     map.addControl(new BMap.ScaleControl());
 42     map.addControl(new BMap.OverviewMapControl({isOpen: true}));
 43     map.centerAndZoom(new BMap.Point(list[0].Long,list[0].Lat), 15);  // 初始化地图,设置中心点坐标和地图级别
 44     map.addControl(new BMap.MapTypeControl());   //添加地图类型控件
 45     map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
 46
 47     setTimeout(drawIcon,500);
 48     var carMk;
 49     var myBeginIcon = new BMap.Icon("http://e.hiphotos.baidu.com/image/pic/item/7e3e6709c93d70cfaf72bca2f0dcd100bba12b90.jpg", new BMap.Size(25,37), {imageOffset: new BMap.Size(0, 0)});//人
 50     var myEndIcon = new BMap.Icon("http://b.hiphotos.baidu.com/image/pic/item/b58f8c5494eef01f534c096ae8fe9925bd317dc0.jpg", new BMap.Size(25,37), {imageOffset: new BMap.Size(0, 0)});//人
 51
 52     //show_mycat("这里是地址",106.652024,26.617221);
 53     //展示bd地址
 54     var car = "";
 55     function show_mycat(address,long,lat){
 56
 57         if(car) map.removeOverlay(car)
 58         label = new BMap.Label(address, {offset: new BMap.Size(-20, -20)});
 59         car = new BMap.Marker(new BMap.Point(long,lat));
 60         car.setLabel(label);
 61         map.addOverlay(car);
 62         map.panTo(new BMap.Point(long, lat));
 63
 64     }
 65
 66     //显示原始路线
 67     function drawGreenLine(i,color,weitht){
 68
 69         var polyline = new BMap.Polyline([
 70             new BMap.Point(list[i].Long,list[i].Lat),//起始点的经纬度
 71             new BMap.Point(list[i+1].Long,list[i+1].Lat)//终点的经纬度
 72         ], {strokeColor:color,//设置颜色
 73             strokeWeight:weitht, //宽度
 74             strokeOpacity:1});//透明度
 75         map.addOverlay(polyline);
 76
 77     }
 78
 79     //获取路线
 80      function drawGreenAddress(i,color,weitht){
 81
 82         if(i%2==0){ //不能太频繁请求百度地址,这里可能会改大
 83             var geoc = new BMap.Geocoder();
 84             geoc.getLocation(new BMap.Point(list[i].Long,list[i].Lat),function(rs){
 85             var addComp = rs.addressComponents;
 86             address =  addComp.province + addComp.city  + addComp.district + addComp.street  + addComp.streetNumber;
 87             $("#allmap_value").val(address)
 88             });
 89         }
 90     }
 91
 92     function lineAddress(i,color,weitht){
 93         drawGreenLine(i,color,weitht)
 94         drawGreenAddress(i,color,weitht)
 95     }
 96
 97     function drawIcon(){
 98         if(carMk){
 99             map.removeOverlay(carMk);
100         }
101         carMk2 = new BMap.Marker(
102                 new BMap.Point(list[0].Long,list[0].Lat),//起始点的经纬度
103                 {icon:myBeginIcon});
104         map.addOverlay(carMk2);
105
106         carMk = new BMap.Marker(
107                 new BMap.Point(list[listLast].Long,list[listLast].Lat),//终点的经纬度
108                 {icon:myEndIcon});
109         map.addOverlay(carMk);
110
111         for(var i=0;i<list.length-1;i++){
112
113             drawGreenLine(i,"green",4);
114         }
115
116     }
117
118     //停止
119 function stop() {
120
121     if(timer) {
122         window.clearTimeout(timer);
123     }
124 }
125 //运行地图轨迹
126     function play(){
127      if(index < listLast){
128         lineAddress(index,"red",2);
129         //显示地址
130         show_mycat($("#allmap_value").val(),list[index+1].Long,list[index+1].Lat);
131
132         timer  = window.setTimeout("play(" + index + ",‘red‘,2)", 500);
133         index++;
134
135      }
136
137     }
138
139
140 </script>

效果图

执行play() 方法可根据经纬度跑地图

原文地址:https://www.cnblogs.com/wtcl/p/10275595.html

时间: 2024-08-13 03:53:21

百度地图API 绘制轨迹历史的相关文章

百度地图api描绘车辆历史轨迹图

最近公司在做项目需需求:车辆定位后在地图显示历史轨迹的功能 一开始使用了google的地图api,但是发现会一直关闭,索性支持下国产,使用了百度地图api search方法把两个点连接成线后,会出现起点和终点的图标,但是需要要求只有第一个点和最后一个点是起点和终点,中间的全是小车的图案 我画点的功能是为了覆盖掉 search连线的起始点,但是覆盖后悬浮弹出层会出现问题,所以我就写把存放起点和终点的层去掉, 但是地图渲染时需要时间的,我采取了2秒后执行,把存放起点和终点icon的div清空了,这样

使用百度地图API实现轨迹回放

调用百度地图API实现路线的轨迹回放功能其实很简单,只要搞懂以下几点即可: 1.需要用Polyline方法先绘制好路线图 2.用Marker添加标注点 3.关键一步,通过结合定时器,使用Marker创建的标注点实例的setPosition改变标注点位置,实现播放功能 代码分享,直接复制即可使用 [html] view plaincopy <!DOCTYPE html> <html> <head> <meta name="viewport" co

百度地图API绘制带头箭头的折线

源代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;marg

使用百度地图API制作线路轨迹播放

1.使用百度地图API制作轨迹播放: 可应用于车辆跟踪.行驶线路回放.跑步行程的记录等地图应用场景, 1.1绘制静态轨迹图 获取多个轨迹点point(必须包含经度.纬度) 使用polyline对象依次连接相邻的2个点(注意polyline的个数比point的少1) 1.2绘制动态轨迹图(固定间隔时间) 每隔500毫秒读取一个轨迹点,实现a,b两个功能 a增加一条polyline b将marker从先前的point移到当前点 主方法使用setTimeout方法迭代来实现动态循环 Polyline在

百度地图API,根据经纬度实现车辆移动轨迹绘制

百度地图,实现车辆轨迹绘制 实现思路: 1.根据经纬度实现车辆轨迹绘制 2.使用百度地图API的两个覆盖物实现,Polyline(折线)绘制轨迹,Marker(图标)绘制小车图标 3.将每两个坐标间连线起来,形成连贯的轨迹线路 4.生成下一个图标后删除上一个绘制的图标,形成小车移动动画感 5.本例使用的是临近的随机坐标点 6.初学者,欢迎大家交流学习 7.查看实例 代码: [html] view plain copy <!DOCTYPE html> <html> <head&

【百度地图API】北京周边7日游——图标按路线轨迹行动

原文:[百度地图API]北京周边7日游--图标按路线轨迹行动 任务描述: 春节就要来啦~酸奶小妹的妈妈要从遥远的重庆,来到北京过春节呢!酸奶小妹忙着给妈妈计划,北京周边的旅游线路.计划好路线后,就开始驾车旅游啦~~ 如何实现: 利用百度地图API先确定几个坐标点points,把他们连成一条折线BMap.Polyline(points). 然后,更改标注图片为一辆小车,var myIcon = new BMap.Icon("car.png",...). 最后利用二次开发的类K_point

百度地图api,使用QT同时绘制多个标注

myMap.html     文件内容: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type=

百度地图API

本文我将从如何使用地图API(本文以百度为例,谷歌类似)开始,往后的扩展行的内容详见后续文章.1.打开链接http://developer.baidu.com/map/jshome.htm  这里有很多DEMO,或者你直接百度搜索“百度地图API”,第一个就是.进入后有很多方向供你选择,由于现在开源的地图API都是JS脚本写的,所以我上面的链接就只针对JAVASCRIPT进行介绍.  即使是编程菜鸟(像我这种),也知道当你在任何一个开发环境下写代码时,都需要加入头文件,例如,你要在C++里使用c

百度地图API使用介绍

百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html> 2. <head> 3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4. <title>Hello, World</title> 5. <sc