百度地图路线回放

百度地图路线回放

效果图

在这里插入图片描述
在这里插入图片描述

直接可以运行
<!DOCTYPE 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>
		body, html,#allmap {width: 100%;height: 95%;overflow: hidden;margin:0;font-family:"微软雅黑";}
		#l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;}
		#r-result{height:100%;width:20%;float:left;}
		#result {width:100%}
	</style>
	<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=填写你的秘钥"></script>
	<script type="text/javascript" src="http://api.map.baidu.com/library/LuShu/1.2/src/LuShu_min.js"></script>
	<title>xd运输路径</title>
</head>
<body>
	<div id="allmap"></div>
	
	<div id="result"></div>
	<button id="run" >开始</button>
	<button id="stop">停止</button>
	<button id="pause">暂停</button>
	<button id="hide">隐藏信息窗口</button>
	<button id="show">展示信息窗口</button>
</body>
 <script>
	//百度地图API功能
	 var map = new BMap.Map("allmap",{
		 enableClicking:false
	 });
	 map.enableScrollWheelZoom(true);
	 
	 //获取数据
	 //获取驾车获取数据
	 var drv=new BMap.DrivingRoute('西安', {
	     onSearchComplete: function(res) {
	         if (drv.getStatus() == BMAP_STATUS_SUCCESS) {
	             var plan = res.getPlan(0);
	             var arrPois =[];//地图点数据
	             for(var j=0;j<plan.getNumRoutes();j++){
	                 var route = plan.getRoute(j);
	                 arrPois= arrPois.concat(route.getPath());
	                 
	                 //模拟添加经过时间
	                 for(var i=0;i<arrPois.length;i++){
	                 	var date = new Date(1573199501722+i*1000*60).toLocaleString();
	                 	arrPois[i].gpsTime=date;
	                 }
	               //添加轨迹
	               addRoute(arrPois);
	             }
	            ;
	         }
	     }
	 });
	
	//获取数据
	  var start = new BMap.Point(108.953412,34.265612);    //起点
	  var end = new BMap.Point(108.97109,34.225341);    //终点
	 drv.search(start, end);
	
	 var lushu; //路书
	
	 //添加路线
	 function addRoute(data){
	 	var points = [];//点信息数组
	 	var landmarkPois = [];//路书需要数组
	 	var startTime="";
	 	for(var i=0;i<data.length;i++){
	 		var p= new BMap.Point(data[i].lng, data[i].lat);
	 		
	 		if(i==0){ //起点
	 			addMarker(p,data[i].gpsTime,false);
	 			map.centerAndZoom(p, 14);
	 			startTime=data[i].gpsTime;
	 		}else if(i==data.length-1){ //止点
	 			addMarker(p,data[i].gpsTime,false);
	 		}else if(i%Math.round(data.length/10)==0){//其他点
	 			addMarker(p,data[i].gpsTime,false);
	 		}else{
	 			addMarker(p,data[i].gpsTime,true);
	 		}
	 		
	 		points.push(p);
	 		
	 		//路书特殊点(显示经过时间)
	 		landmarkPois.push(new landmark(data[i].lng, data[i].lat,data[i].gpsTime,0.1));
	 	}
	 	
	 	//画线
	 	addLine(points);
	 	
	 	//设置点全部在视野中
		map.setViewport(points);
	 	
	 	
	 	//路书
	 	lushu = new BMapLib.LuShu(map,points,{
	 	    defaultContent:startTime,
	 	    autoView:true,// 是否开启自动视野调整,如果开启那么路书在运动过程中会根据视野自动调整
	 	    icon  : new BMap.Icon('http://lbsyun.baidu.com/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)}),
	 	    speed: 4500,
	 	    enableRotation:true,// 是否设置marker随着道路的走向进行旋转
	 	    landmarkPois: landmarkPois
	 	});
	 }
	
	 // 添加点
	 function addMarker(point,gpsTime,b){
		//设置marker图标为水滴
		var marker = new BMap.Marker(new BMap.Point(point.lng,point.lat), {
		  // 指定Marker的icon属性为Symbol
		  icon: new BMap.Symbol(BMap_Symbol_SHAPE_POINT, {
		    scale: 1,//图标缩放大小
		    fillColor: "orange",//填充颜色
		    fillOpacity: 0.8//填充透明度
		  })
		});
		map.addOverlay(marker);
	  
	  	if(b)
	  	 	marker.hide();
	  	 
	  	var label = new BMap.Label("时间:"+gpsTime+"<br/>位置:"+ marker.getPosition().lng + "," + marker.getPosition().lat,
	  			{offset:new BMap.Size(20,-10)});
	 	marker.setLabel(label);
	 	label.hide();
	 	
	 	marker.addEventListener("mouseover",onMouseover);//鼠标进入事件
	 	marker.addEventListener("mouseout",onMouseout);//鼠标移出事件
	 }
	
	 //画线
	 function addLine(points){
	 	//画线
	 	var sy = new BMap.Symbol(BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, {
	 	    scale: 0.6,//图标缩放大小
	 	    strokeColor:'#fff',//设置矢量图标的线填充颜色
	 	    strokeWeight: '1',//设置线宽
	 	});
	 	var icons = new BMap.IconSequence(sy, '100%', '4%');
	 	var polyline =new BMap.Polyline(points, {
	 		   enableEditing: false,//是否启用线编辑,默认为false
	 		   enableClicking: true,//是否响应点击事件,默认为true
	 		   icons:[icons],
	 		   strokeWeight:'5',//折线的宽度,以像素为单位
	 		   strokeOpacity: 0.9,//折线的透明度,取值范围0 - 1
	 		   strokeColor:"#40D6F9" //折线颜色
	 		});
	 	map.addOverlay(polyline);   //增加折线
	 }
	
	 //鼠标进入事件
	 function onMouseover(e){
	 	var p = e.target;
	 	p.getLabel().show();
	 }
	 //鼠标移出事件
	 function onMouseout(e){
	 	var p = e.target;
	 	p.getLabel().hide();
	 }	
	
	 //绑定事件
	 $("run").onclick = function(){
	 	lushu.start();
	 }
	 $("stop").onclick = function(){
	 	lushu.stop();
	 }
	 $("pause").onclick = function(){
	 	lushu.pause();
	 }
	 $("hide").onclick = function(){
	 	lushu.hideInfoWindow();
	 }
	 $("show").onclick = function(){
	 	lushu.showInfoWindow();
	 }
	 function $(element){
	 	return document.getElementById(element);
	 }
	
	
	
	 //路书经过点
	 function landmark(lng,lat,html,pauseTime){
	 	this.lng=lng;
	 	this.lat=lat;
	 	this.html=html;
	 	this.pauseTime=pauseTime;
	 }
 </script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值