關于高德地圖軌跡回放(點平滑移動)的實現

高德地圖軌跡回放沒有更多的代理方法支持,看了一下高德地圖的官方demo里面只有一個點標注平滑移動,類里面也只有一個方法用于整個動畫的實現,但是里面是畫了軌跡的,如果是坐標點的話,單靠這個方法很難實現更多的功能,比如說要顯示行駛速度,行駛的具體信息,包括他的暫停都是全部動畫的暫停,而不是到了某坐標點就暫停,如果在加入進度條更不能滿足。

實現的方式就是:通過點與點之間形成一條路線,就類似于demo里的一條一條的軌跡,頻繁的調用動畫的方法,類似于動畫片的一幀一幀的播放一樣,并且在回調方法里加入判斷。

注意:在一幀之中,一個坐標系數組只能存放一條地理位置信息!!!

提示問題:動畫方法的duration參數,越大,動畫時間越慢,越小越快,具體多小有多快,不得而知,不知道他是怎么計算時間的。研究了一下,發現實際時間需要通過這個方法獲取

for(MAAnnotationMoveAnimation *animation in [self.newannotations allMoveAnimations]) {

factTime = factTime+animation.duration;

}

這個factTime就是實際時間,不過在我這沒用到,如果需要用到播放時間可以使用這個參數

關于停止在某個定位點的實現,可以通過一個全局變量計算器,用它來計算當前進行過的動畫次數,點擊停止的時候,已經獲取了當前的動畫次數,這樣就能知道在哪個點停下了。這里為什么同樣是使用的停止方法,而不是從頭開始呢,因為我的地理系坐標里面只有一個經緯度,相當于一條路徑,所以從頭自然就不會從起始點開始了。

至于進度條的實現,可以通過UISlider控制器和定時器實現。

如何將進度條和小車的地圖移動聯系起來,很簡單,只要將進度條的刻度數量和經緯度的個數對應即可。

項目最終已經實現,如果后續有bug,再進行補充。

總的來說,高德地圖給的代理方法(監聽)太少,他的代理方法是你把經緯度給他,他根據你的經緯度數組,從第一個到最后一個按照動畫的方式讓其在地圖上移動,至于中間過程的監聽是沒有的,所以做起來就很繁瑣,希望高德地圖能夠改進吧。


高德地圖軌跡回放演示_騰訊視頻
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容