百度地图利用DrivingRoute做轨迹回放

 <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="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你自己的AK"></script>
<title>百度地图利用DrivingRoute做轨迹回放</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">

// 百度地图API功能
 
    var map = new BMap.Map("allmap");  // 创建Map实例
	map.centerAndZoom("哈尔滨",15);      // 初始化地图,用城市名设置地图中心点
	map.setMapStyle({ //可以自己定义地图底图 http://developer.baidu.com/map/custom/
		styleJson:[
          {
                    "featureType": "water",
                    "elementType": "all",
                    "stylers": {
                              "color": "#72b8fe"
                    }
          },
          {
                    "featureType": "road",
                    "elementType": "geometry.fill",
                    "stylers": {
                              "color": "#ffffff"
                    }
          },
          {
                    "featureType": "road",
                    "elementType": "geometry.stroke",
                    "stylers": {
                              "color": "#bababa"
                    }
          },
          {
                    "featureType": "road",
                    "elementType": "labels.text.fill",
                    "stylers": {
                              "color": "#767676"
                    }
          },
          {
                    "featureType": "road",
                    "elementType": "labels.text.stroke",
                    "stylers": {
                              "color": "#ffffff"
                    }
          },
          {
                    "featureType": "land",
                    "elementType": "all",
                    "stylers": {
                              "color": "#b8cb93"
                    }
          }
]
    });
    map.addControl(new BMap.NavigationControl());        
    map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT}));
    map.enableScrollWheelZoom(true);
	var pts = [ 
	   new BMap.Point(126.618398,45.721217), 
	   new BMap.Point(126.62081,45.713008), 
	   new BMap.Point(126.654694,45.732086), 
	   new BMap.Point(126.675481,45.738471) 
	];
   var polyline ;
   var options = {
		onSearchComplete: function(results){
			if (driving.getStatus() == BMAP_STATUS_SUCCESS){
				// 获取第一条方案
				var plan = results.getPlan(0);
				// 获取方案的驾车线路
				var route = plan.getRoute(0);
				//返回路线的地理坐标点数组。(自 1.2 新增)
				var points = route.getPath();
				polyline = new BMap.Polyline(points);
				//alert(points.length);
				map.addOverlay(polyline);          //增加折线
			}
		}
		//,
		//renderOptions:{map: map, autoViewport: true}
	};
   var driving = new BMap.DrivingRoute(map, options);
     
     
	i=0;
	function playLine(i){
		if(i==0){//第一个点 直接添加
			var marker = new BMap.Marker(pts[i]);  // 创建标注
			map.addOverlay(marker); 
			marker.setLabel(new BMap.Label("我是第"+(i+1)+"个点",{offset:new BMap.Size(20,-10)}));
			map.panTo(pts[i]);
			i++;
			setTimeout(function(){
					playLine(i);
			},2000)
		}else{//获取PolyLine并添加 添加点
			if(i<=pts.length){
				driving.search(pts[i-1], pts[i]); 
				map.addOverlay(polyline);
				var marker = new BMap.Marker(pts[i]);  // 创建标注
			    map.addOverlay(marker);
				marker.setLabel(new BMap.Label("我是第"+(i+1)+"个点",{offset:new BMap.Size(20,-10)}));
				map.panTo(pts[i]);
				i++;
				setTimeout(function(){
					playLine(i);
				},2000)
			}
		}
	}
    playLine(i);
</script>
需求:手机上报的GPS坐标,需要在网页上做动态路径回放
问题:直接用上报的GPS坐标构造PolyLine,与实际路径差别太大。
解决办法:利用DrivingRoute获取到两个坐标点直接的优化路径。
补充说明:此DEMO没有做大数据量的测试。仅提供思路以供参考。
时间: 2024-08-23 22:36:15

百度地图利用DrivingRoute做轨迹回放的相关文章

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

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

百度地图轨迹回放,自定义路书,边走边画线

在原有的百度路书的基础上,做了修改,使其能实现边走边画线的需求. 源代码如下,其中您的密钥要换成自己的,如果不换,则需要粘贴到百度API示例里面的GPS路书的编辑器中才能运行 <html lang="en"> <head> <meta charset="utf-8" /> <title>轨迹回放(路书)</title> <style type="text/css"> body

GPS/轨迹追踪、轨迹回放、围栏控制

折腾一个多月终于弄完了这个项目,起初都未曾接触GPS/轨迹追踪.轨迹回放.圈划围栏...等一些在百度地图或者Googel地图操作的一些业务,后端的业务相对来说简单点 cas单点登录,mongdb灵活的数据存储方式,ActiveMQ消息推送.Redis存储... 这篇的主要篇幅主要来讲述下项目中的一些地图上棘手的问题 接口测试数据: 1.GPS数据接收接口对于日期格式的转化 作为码农都知道Web接口传输的数据都是以Json的数据形式传输,日期格式不同是我们头疼的事情,当然要是我们自己给App端,云

使用GMap.NET类库,实现地图轨迹回放。(WPF版)

前言 实现轨迹回放,GMap.NET有对应的类GMapRoute.这个类函数很少,功能有限,只能实现简单的轨迹回放.要实现更复杂的轨迹回放,就需要自己动手了. 本文介绍一种方法,可以实现复杂的轨迹回放.有句话"功夫在诗外",GMap.NET给你提供了基本地图处理功能:但是不要让CMap.NET束缚了手脚.你需要有深刻理解地图实现原理,深入理解WPF动画的原理,才能到达随心所欲.最终的效果如下: GMap.NET 显示原理 地图就是由许多方格"瓦片"组合而来.当你移动

【智能手环APP for Android 】01 百度地图展示行动轨迹

1.效果图示 2.行动轨迹数据 <span style="font-size:18px;">[ { "LocationX":"121.42619", "LocationY":"31.186655" }, { "LocationX":"121.42694", "LocationY":"31.187215" }, { &

如何实现LBS轨迹回放功能?含多平台实现代码

本篇文章告诉您,如何实现轨迹回放.并且提供了web端,iOS端,Android端3个平台的轨迹回放代码.拷贝后可以直接使用.另外,文末有小彩蛋,算是开发者的福利. Web端/JavaScript 实现轨迹回放有2个主要功能需要实现,1个是定位取点,1个是按照轨迹慢慢移动Marker. 如何实现定位取点,可以看之前的文章:http://www.cnblogs.com/milkmap/p/4962085.html 本篇文章里的定位点,我就直接假设一堆点,可以push到数组里. var marker,

全面解读如何利用百度知道来做产品推广

百度系的百度知道是一个非常好的推广平台,权重高流量大,有很多人遇到问题都喜欢在百度知道里搜索或提问,从而得到帮助,所以,掌握合理方法技巧在百度知道做推广也是一种非常不错的营销手段.下面我就针对百度知道如何做推广进行全面解析, 虽然,百度知道推广,大家都十分清楚,也被很多高手熟练运用,但对于很多新手来说,没有长期坚持,就不会看到效果,有时候我们不需要很多高深的技巧,只需要简单的事情重复做,就好了. 一.做百度知道的目的 做百度知道,我们的目标很明确,我们做的是某个关键词,那么我们就要查询这个关键词

百度如果不做医疗行业的推广,你搜索到的就都是真的了?

2016年4月12日,魏则西父亲代他在知乎留言,「我是魏则西的父亲魏海全,则西今天早上八点十七分去世,我和他妈妈谢谢广大知友对则西的关爱,希望大家关爱生命,热爱生活.」 当时他应该不会想到,半个月后,舆论掀起,全国几乎所有的网民都走到百度的对立面. 魏则西在之前是通过百度搜索到「武警北京总队第二医院」,因为信息不实导致了他错过了最佳治疗时间.以下是他在知乎上的文章节选: 有此可见,「百度」确实成为事件的导火索.不可否认地成为了魏则西病逝的直接原因之一,在道德与利益的交叉口,百度的天平明显偏颇,导

单次轨迹回放

已知有一段轨迹数据,点击回放按钮,小车沿着路线自动的往前运动,播放完毕也就结束了 public class MoveSingleThread extends Thread{ private List<LatLng> mLatLngList; private Marker mCarMarker; public MoveSingleThread(List<LatLng> latLngs, Marker marker) { super(); mLatLngList = latLngs;