效果
思路
- 网络数据拉取初始化数据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() == "