百度地图js 画运行轨迹之放大地图层级后自动刷新时仍保持最大层级状态(一)
2018-01-10 16:16
621 查看
做了一个vue的手机项目,有部分是关于研究百度地图的。需求是:
1.后台取数,前端根据数组坐标画运行轨迹。
2.前端需要让其运行轨迹自动刷新,频率是30s.(最好的方式实时展示到页面上。现在都是大数据的时代,在数据大的情况下,会出现卡死的情况,还需要在研究)
3.地图可以放到层级,但是在自动刷新时,又回到了一开始设置的那种级别,想要是在放大层级后,仍能保持当前状态。
4.所有的点要在可视范围内显示。下面就一一说明:
1.前端vue页面设置:
在data 中初始化一个对象:
2.百度JS调用:
地图添加起止点图标:
尚未完成,下次分享
1.后台取数,前端根据数组坐标画运行轨迹。
2.前端需要让其运行轨迹自动刷新,频率是30s.(最好的方式实时展示到页面上。现在都是大数据的时代,在数据大的情况下,会出现卡死的情况,还需要在研究)
3.地图可以放到层级,但是在自动刷新时,又回到了一开始设置的那种级别,想要是在放大层级后,仍能保持当前状态。
4.所有的点要在可视范围内显示。下面就一一说明:
1.前端vue页面设置:
在data 中初始化一个对象:
changeBaidu:{ isZoomed:false,//默认没有进行zoom操作 currentZoom:17,//默认层级 }, 在methods方法中ajax成功回掉中进行调用:
common.routeMap(that.mapInstane,that.middle,result,changeBaidu); //行驶中的车每一分钟刷一次 if(that.carTripList && that.carTripList.length>0){//判断是否有轨迹 if(that.tripInfo.EndTime==""||that.tripInfo.EndTime==null){//判断是否结束 that.intervalid1 = that.intervalid1 || setInterval(function () { that.mapInstane.removeOverlay(marker2); that.initTrip(that.changeBaidu); },30000); }else { if(that.intervalid1){ clearInterval(that.intervalid1); } }
2.百度JS调用:
routeMap:function (map,tracks,result,changeBaidu) { // 百度地图API功能 var mapInit=map; mapInit.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 // this.layoutMap(mapInit); var that=this; var runLine=tracks; //第一次进来把起点标注给固定住,不让其清除掉 if(changeBaidu.isZoomed==false){ this.addMarker(this.translateBD(runLine[0].Latitude,runLine[0].Longitude),'起点',mapInit,runLine[0],result); } this.addMarker(this.translateBD(runLine[runLine.length-1].Latitude,runLine[runLine.length-1].Longitude),'终点',mapInit,runLine[runLine.length-1],result); //判断默认进来没有进行缩放操作,不影响结束状态的展示 if(changeBaidu.isZoomed==false){ //计算当前位置中心原点 //设置地图中心点(已GPS数组中间的点为中心点) var centre = runLine[parseInt(runLine.length/2)]; //缩放比例 var point1=this.translateBD(runLine[0].Latitude,runLine[0].Longitude);//起点 var point2=this.translateBD(centre.Latitude,centre.Longitude);//new BMap.Point(centre.Longitude, centre.Latitude);//中点 var point3=this.translateBD(runLine[runLine.length-1].Latitude,runLine[runLine.length-1].Longitude);//终点 var points = [point1, point2,point3]; var view = mapInit.getViewport(eval(points)); var mapZoom = view.zoom; var centerPoint = view.center; mapInit.centerAndZoom(centerPoint,mapZoom-1); changeBaidu.isZoomed=true; }else { mapInit.centerAndZoom(this.translateBD(runLine[runLine.length-1].Latitude,runLine[runLine.length-1].Longitude),mapInit.getZoom()); } this.storkeLine(mapInit,tracks); },
地图添加起止点图标:
addMarker: function (point, name,mapInit,trackUnit,result) { if(name=="起点"){ var myIcon = new BMap.Icon("asserts/img/static/startMap.svg", new BMap.Size(45,45),{ anchor: new BMap.Size(20, 45)//这句表示图片相对于所加的点的位置mapStart }); var marker = new BMap.Marker(point,{icon:myIcon}); // 创建标注 mapInit.addOverlay(marker); // 将标注添加到地图中 marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画 this.setInfoBox(trackUnit,marker); }else if(name=="终点"){ //判断是否为结束行程,结束显示终点,没结束显示小车 if(result.EndTime==""||result.EndTime==null){ var myIcon2 = new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26), {anchor : new BMap.Size(27, 13)}); }else { var myIcon2 = new BMap.Icon("asserts/img/static/endMap.svg", new BMap.Size(45,45),{ anchor: new BMap.Size(20, 45)//这句表示图片相对于所加的点的位置mapEnd 40,45 }); } window.marker2 = new BMap.Marker(point,{icon:myIcon2}); // 创建标注 marker2.setRotation(90);//trackUnit.route mapInit.addOverlay(marker2); // 将标注添加到地图中 // map.removeOverlay(marker); marker2.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画 //添加mark位置的信息提示 this.setInfoBox(trackUnit,marker2); } },
尚未完成,下次分享
相关文章推荐
- Android 锁屏状态下如何保持程序正常运行
- Linux 简单shell创建自己的守护进程,自动重启,纪录进程运行状态,日志切割压缩
- JS实现对gridview中的checkbox的选中个数记录,并在页面刷新时保持checkbox的状态 .
- 在arcgis javascript 的sdk中 地图自动居中和放大 到一个graphic的位置.并且自动打开InfoWindow
- 自动检查mysql运行状态
- 刷新后保持大分类和小分类的展开状态
- Android开发之程序运行时保持屏幕、CPU、键盘灯的状态
- SQL复制订阅(发布作业名称)作业被DBA用户拒绝,订阅日志读取器代理自动停止,订阅状态未运行。
- iOS-OC-监听网络状态,有网时数据自动刷新
- 懒人脚本:sysinfo系统运行状态自动收集
- [OpenStack-Nova]宿主机重启自动恢复虚拟机运行状态
- 崩溃后程序保持运行状态而不退出
- Android 开发中百度地图运行一段时间地图轨迹不更新的问题
- 检测tomcat运行状态,自动重启TOMCAT脚本SHELL
- linux配置monit自动监控程序运行状态
- js实现刷新页面后select标签保持选中状态
- ps计算某些进程保持运行状态的时间
- 天地图专题四:在天地图上显示运行轨迹
- 如何在电脑睡眠状态下保持程序运行
- 自动最大化的Container,MyExt.ViewPort,自动填充到所属元素的最大状态