【android学习简记】使用高德地图绘制平滑的轨迹

【目的】使用高德地图通过手机记录下的GPS坐标点绘制轨迹,这应该是一个很大的需求吧。

【高德apiDemo地址】https://lbs.amap.com/dev/demo/path-smooth#Android

【啰嗦一下】这是我今天从花都区狮岭的客户处回到海珠区赤岗的轨迹记录点。所有获得的坐标点,经过高德api的过滤平滑处理,大致上是实现了一个参考性的轨迹记录,个别是定位偏了,大部分都是在高速上跑的,狮岭--

许广高速---华南快速---新港东路出口---赤岗。若要实现行车记录,应该还需要高德地图的轨迹纠偏。

【轨迹实现思路】开启service后台运行---通过service定时获取坐标信息--将坐标保存在数据库

【实现效果】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【主要代码】PathSmoothTool.java是高德地图提供的一个坐标处理类。

PathSmoothTool mpathSmoothTool=new PathSmoothTool();
        mpathSmoothTool.setIntensity(5);
        List<LatLng> pathoptimizeList = mpathSmoothTool.pathOptimize(points);

【问题探究】

如何让service保持在后台运行而不被KILLED?(网上很多方法,我也试过很多方法,很多都无用)

不知是不是机子的原因,我的oppo手机锁屏时就会kill掉service,我只有不断定时监听service是否被killed,如果被killed再启动service,很无奈的感觉吧。

轨迹异常,跑到非洲去了?没错,那应该是网络异常或其他导致获取坐标异常,获取到的是(0,0),子午线和赤道线交界处,恩,非洲!

坐标偏移,没在大路上?我相信能用高德的轨迹纠偏给纠偏一下,应该大致上能搞定,但是我想着大部分时间都是靠腿吧,就别整行车轨迹了。

部分轨迹很显然的不连贯,看着不自然?这应该是未及时获取到坐标点,service被killed掉了,本质上难以解决,但是感官上应该可以滑润一点,我的想法是判断一下相邻两点的时间和距离,差距大了,那么可以换个虚线表示?

以上问题,希望能得到更好更专业的解决方法和建议,还希望能和大家一起讨论讨论。

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
实时路线轨迹的实现需要结合高德地图的定位功能和绘制功能。 1. 首先,在Vue中引入高德地图的JavaScript API,并创建地图对象: ```javascript import AMapLoader from '@amap/amap-jsapi-loader' // 创建地图对象 let map = null AMapLoader.load({ key: 'your amap key', version: '2.0', plugins: ['AMap.Geolocation'] }).then((AMap) => { map = new AMap.Map('map-container') }) ``` 2. 调用高德地图的定位功能获取当前位置: ```javascript let geolocation = null // 创建定位对象 AMapLoader.load({ key: 'your amap key', version: '2.0', plugins: ['AMap.Geolocation'] }).then((AMap) => { geolocation = new AMap.Geolocation({ enableHighAccuracy: true, // 是否使用高精度定位,默认为false timeout: 10000, // 超过10秒后停止定位,默认为无穷大 buttonOffset: new AMap.Pixel(10, 20), // 定位按钮的位置偏移量 }) map.addControl(geolocation) // 获取当前位置 geolocation.getCurrentPosition((status, result) => { if (status === 'complete') { // 定位成功,将地图中心设置为当前位置 map.setCenter(result.position) } else { // 定位失败 console.log('定位失败', result.message) } }) }) ``` 3. 在地图绘制路线轨迹: ```javascript let path = [] // 路线轨迹点集合 // 添加路线轨迹 let polyline = new AMap.Polyline({ path, strokeColor: '#00a1fe', strokeWeight: 5, }) polyline.setMap(map) // 更新路线轨迹 function updatePath(newPoint) { path.push(newPoint) polyline.setPath(path) } ``` 4. 实时更新路线轨迹: ```javascript // 开启定时器,每隔1秒更新路线轨迹 setInterval(() => { // 获取当前位置 geolocation.getCurrentPosition((status, result) => { if (status === 'complete') { // 定位成功,更新路线轨迹 updatePath(result.position) } else { // 定位失败 console.log('定位失败', result.message) } }) }, 1000) ``` 以上就是Vue高德地图实现实时路线轨迹的基本流程,需要注意的是,高德地图的JavaScript API使用了Promise异步机制,需要注意回调函数的执行时机。另外,在实际应用中,还需要结合后端接口获取历史路线轨迹数据,并将其加载到地图上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智商不够_熬夜来凑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值