高德地图之轨迹回放\巡航图(带进度条) |
您所在的位置:网站首页 › 高德地图查看患者轨迹怎么查 › 高德地图之轨迹回放\巡航图(带进度条) |
首先参考的是高德地图,两者均可实现。 轨迹回放 点标记的位移 巡航器移动 巡航器的位移 巡航器事件方法 巡航器的按钮方法 var navigBtnsConf = [{ name: '开始巡航', action: 'start', enableExp: 'navgStatus === "stop" || navgStatus === "pause"' }, { name: '暂停', action: 'pause', enableExp: 'navgStatus === "moving"' }, { name: '恢复', action: 'resume', enableExp: 'navgStatus === "pause"' }, { name: '停止', action: 'stop', enableExp: 'navgStatus === "moving"' }, { name: '销毁', action: 'destroy', enableExp: 'navgExists' }];问题:巡航器结束后,轨迹没有清空、巡航器没有回到初始位置。 解决:需要执行停止方法,清除路径。巡航器重新定位 this.navgControl('stop') // 停止 this.navg1.moveToPoint(0, 0); // 移动巡航器到初始位置0,0问题:点击列表的点,对应巡航器到达指定经纬度,路线。 解决:列表显示的点,与生成的巡航器的节点一一对应,只要对应序号即可 问题:自定义巡航器图片失败 解决: import imgUrl from '../../assets/daohang.png' let image = PathSimplifier.Render.Canvas.getImageContent(imgUrl, onload, onerror)问题:进度条播放时间和总时间 解决: // 总时间 var dis = AMap.GeometryUtil.distanceOfLine(this.lineArr); // 总路程 米 this.Times = parseInt((dis / 1000 / 200) * 60 * 60); // 计算总时间 this.totalTime = this.secondToTimeStr(this.Times) // 进度条变化,时间变化 that.movedTime = parseInt(that.Times * (that.sliderVal / 100)) that.passedTime = that.secondToTimeStr(that.movedTime)问题:巡航器播放完成,进度条实际没有完全播放 问题:巡航器播放速度不是匀速,会出现个别点位移太快、太慢 问题:巡航器节点之间距离太短,对应进度条 移动过快。如下对比图:84、90。 分析:三个问题都是同一错误引起的。应该滑块赋值,其本身赋值为(idx+tail),只考虑百分比,没有考虑节点之间距离的问题,所以不能按照节点比例来计算。只能按照距离。 that.sliderVal = (totalIdx / len) * 100
getMovedDistance() // 返回巡航经过的距离(起始节点到当前位置),单位米;stop后会重置为0 使用巡航器位移的距离,可以做到对应。但这个得从开始到结束,点无法对应行驶的距离 // 开始到结束,中间没有暂停移动滑块 that.navg1._movedDist = this.getMovedDistance() - that.navg1._startDist; // 现在-开始最后找到解决办法: that.navg1._movedDist = this.getMovedDistance() // 巡航器移动距离 // 进度条实时展示tail !that.isOnSlider && (that.sliderVal = (that.navg1._movedDist / dis) * 100); // 对应进度条滑块值这里用到 this.getMovedDistance()只是记录:开始0——移动——结束才为0,所以在滑块改变方法中调用stop来清空this.getMovedDistance()。 通过打印能够清楚的看到滑块移动后执行的方法 问题:采用表格搜索的方式绘制巡航器、巡航线,前一个搜索条件的线无法清除,导致两个线叠加 解决: this.pathSimplifierIns.setData() // 设定数据源数组,并触发重新绘制。data为空时将清除显示内容。到这里文章就结束了,其实是一个很简单的实现过程,认真看Api文档就能够实现,但是前前后后试了5、6种实现方法花了两周的时间。总结来说,整理好思路这个才是最重要的。 演示图: 参考代码:(ps:用的是节点定位,所以定位不适用) https://blog.csdn.net/weixin_40579884/article/details/89675275?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.highlightwordscore https://www.codetd.com/article/11454469 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |