Android中用高德地图实现轨迹回放

本文详细介绍了如何在Android应用中使用高德地图实现轨迹回放功能。首先展示实现效果,接着阐述实现思路,包括从网络获取数据、初始化SeekBar及设置监听器。在数据处理中,通过SeekBar的进度变化获取位置数据,并更新全局经纬度集合,用于绘制轨迹线。文章还提到了暂停与播放功能的实现,利用Handler进行消息交互。最后,给出了关键代码段,如画线、处理播放和注册SeekBar监听器等。

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

效果

思路

  • 网络数据拉取初始化数据List
    定义数据格式,Key:时间 + Value:经纬度。
  • 初始化SeekBar
    刻度setMax为数据List的size,为什么要这么做?见下一步。
  • 初始化SeekBar的Listener
    onProgressChange的时候,拿到progress,用这个progeress作为position去数据集合里取数据,取出来的数据中再取出其中经纬度,放在一个全局的经纬度集合里,这里全局的经纬度集合是啥?使我们画线的核心集合,后头细说。(因为上一步我们Seekbar的Max是数据的size,所以progress对应的就是数据List里的position)。
  • 画线与全局集合的维护
    这个功能的核心就是俩点,一个api的调用,一个是这个api所依赖的参数—全局经纬度数据集合的维护。
   PolylineOptions polylineOptions = new PolylineOptions()
            .addAll(mLatLngPathList)
            .color(Color.rgb(9, 129, 240)).width(6.0f);
    mLastPolyline = aMap.addPolyline(polylineOptions);
  • 由于本例是播放器类型的设计,所以还需要一个flag来标识暂停与播放
  • 自动播放这个设计是通过播放按钮触发,然后2个handler相互之间发送消息。具体流程我给张图,看看应该明白。

代码

根据上面的图示,将各个部分的代码贴出来。

画线

   /**
     * 画线
     */
    private void drawLine() {
   
   

        //清除
        if (null != mLastPolyline) {
   
   
            mLastPolyline.remove();
        }

        // 增加起点结束
        if (mLatLngPathList.size() > 1) {
   
   
            PolylineOptions polylineOptions = new PolylineOptions()
                    .addAll(mLatLngPathList)
                    .color(Color.rgb(9, 129, 240)).width(6.0f);
            mLastPolyline = aMap.addPolyline(polylineOptions);
        }
        Log.e("轨迹回放", "mLatLngPathList.size()  == " 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值