Android开发:关于高德地图轨迹纠偏,只显示两个点问题的整体概述

作者在使用高德地图开发地图相关业务时,历史轨迹功能中的纠偏 API 遇到问题。官方文档介绍了 Android 地图 SDK 相关方法,作者按文档实现代码后,发现轨迹始终只有一小段。最终找到原因是纠偏方法每次只能纠偏 30 个点,通过分割数据逐段纠偏再合并解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一、前言

二、官方文档

三、具体实现

四、问题

五、解决方法


一、前言

大家好,我是小五。前段时间,公司需要做和地图相关的业务,我们采用了高德地图进行开发,其中用到了历史轨迹、显示点、小车滑动、导航等功能。下面,我就使用中的问题,进行一下总结。

讲一下,总体来说,使用高德比百度要简单一些。其他的功能都挺好实现的,问题不大。唯独历史轨迹功能中的纠偏API,浪费了我很长时间。

最后也做了小车平滑移动,最后实现的效果同官方文档:https://lbs.amap.com/dev/demo/smooth-move#Android

二、官方文档

高德纠偏官方文档是这样写的:

地址:https://lbs.amap.com/dev/demo/path-record#Android

大家可以看到,上图中有两个SDK展示,第一个是: Android地图SDK;第二个是:Android定位SDK。

 

Android定位SDK 咱们不用管,因为定位SDK是为了采集坐标点。采集坐标点不一定非得通过高德实现,也可以使用其他的定位产品,只需要做好坐标系之间的转换即可。

这篇文章我们关心的是Android地图SDK 中的 addPolyline(PolylineOptions options)、queryProcessedTrace(int lineID, java.util.List locations, int type, TraceListener listener)、onFinished(int lineID, java.util.List linepoints, int distance, int waitingtime)这三个方法。

在地图上划线挺简单的,这里就不多说了。主要说一下下面这两个方法,都是关于轨迹纠偏的。 

高德地图的文档写的很清楚:

三、具体实现

于是,我自然按照文档来实现了,下面是我写的代码:

传入原始坐标,对轨迹进行纠偏处理:

 

cutLatlng:纠偏前的轨迹坐标点
queryProcessedTrace(int lineID, java.util.List locations, int type, TraceListener listener)

lineID的意义:路线的编号,可以多条轨迹同时纠偏,具体用法可以看文档。一般都是一条轨迹纠偏,所以一般都填1;

locations的意义:路线轨迹点的集合;

type的意义:轨迹点集合(locations)中点的坐标系类型。比如:locations中坐标是百度坐标系下的点,那type =

LBSTraceClient.TYPE_BAIDU。我的代码里使用 AMapUtil.parseTraceLocationList()方法转换成了高德地图,所以我填的坐标点类型是LBSTraceClient.TYPE_AMAP(高德坐标系下的坐标);

listener:纠偏后的回调接口

 

 if (!mActivity.cutLatlng.isEmpty()) {
                // 调用轨迹纠偏,将mGraspTraceLocationList进行轨迹纠偏处理
                mActivity.mTraceClient.queryProcessedTrace(1, AMapUtil.parseTraceLocationList(mActivity.cutLatlng),
                        LBSTraceClient.TYPE_AMAP, mActivity);
            } else {
                ToastUtil.showToast(mActivity, "暂无历史轨迹");
            }

回调方法:

 @Override
    public void onFinished(int lineId, List<LatLng> list, int distance, int waitingTime) {
        finishedLatLngs.addAll(list);
      
    }

list是纠偏后的数据,然后拿着数据展示到地图上即可,完美!!!!!

四、问题

但是!

你会发现,你的轨迹始终只有一小段,而且无论你采集的轨迹有多远,纠偏之后,使用都只是同一小段。

五、解决方法

就是这个问题,困扰了我两天时间,最后终于发现问题所在了。高德的纠偏方法,每次只能纠偏30个点,无论你一次输入多少个点,都始终纠偏前30个点,后面的点会自动舍弃。这就是问题所在了,所以我就把所有的原始数据进行分割,30个点一段,然后逐段进行纠偏,然后再合并,最后实现了历史轨迹并将轨迹线纠正到路上!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值