高德地圖軌跡回放沒有更多的代理方法支持亥曹,看了一下高德地圖的官方demo里面只有一個點(diǎn)標(biāo)注平滑移動黔寇,類里面也只有一個方法用于整個動畫的實(shí)現(xiàn)灵巧,但是里面是畫了軌跡的抬虽,如果是坐標(biāo)點(diǎn)的話,單靠這個方法很難實(shí)現(xiàn)更多的功能刑峡,比如說要顯示行駛速度洋闽,行駛的具體信息,包括他的暫停都是全部動畫的暫停突梦,而不是到了某坐標(biāo)點(diǎn)就暫停喊递,如果在加入進(jìn)度條更不能滿足。
實(shí)現(xiàn)的方式就是:通過點(diǎn)與點(diǎn)之間形成一條路線阳似,就類似于demo里的一條一條的軌跡骚勘,頻繁的調(diào)用動畫的方法,類似于動畫片的一幀一幀的播放一樣撮奏,并且在回調(diào)方法里加入判斷俏讹。
注意:在一幀之中,一個坐標(biāo)系數(shù)組只能存放一條地理位置信息P蟮酢T蠼!
提示問題:動畫方法的duration參數(shù)玲献,越大殉疼,動畫時間越慢梯浪,越小越快,具體多小有多快瓢娜,不得而知挂洛,不知道他是怎么計算時間的。研究了一下眠砾,發(fā)現(xiàn)實(shí)際時間需要通過這個方法獲取
for(MAAnnotationMoveAnimation *animation in [self.newannotations allMoveAnimations]) {
factTime = factTime+animation.duration;
}
這個factTime就是實(shí)際時間虏劲,不過在我這沒用到,如果需要用到播放時間可以使用這個參數(shù)
關(guān)于停止在某個定位點(diǎn)的實(shí)現(xiàn)褒颈,可以通過一個全局變量計算器柒巫,用它來計算當(dāng)前進(jìn)行過的動畫次數(shù),點(diǎn)擊停止的時候谷丸,已經(jīng)獲取了當(dāng)前的動畫次數(shù)堡掏,這樣就能知道在哪個點(diǎn)停下了。這里為什么同樣是使用的停止方法刨疼,而不是從頭開始呢布疼,因?yàn)槲业牡乩硐底鴺?biāo)里面只有一個經(jīng)緯度,相當(dāng)于一條路徑币狠,所以從頭自然就不會從起始點(diǎn)開始了。
至于進(jìn)度條的實(shí)現(xiàn)砾层,可以通過UISlider控制器和定時器實(shí)現(xiàn)漩绵。
如何將進(jìn)度條和小車的地圖移動聯(lián)系起來,很簡單肛炮,只要將進(jìn)度條的刻度數(shù)量和經(jīng)緯度的個數(shù)對應(yīng)即可止吐。
項目最終已經(jīng)實(shí)現(xiàn),如果后續(xù)有bug侨糟,再進(jìn)行補(bǔ)充碍扔。
總的來說,高德地圖給的代理方法(監(jiān)聽)太少秕重,他的代理方法是你把經(jīng)緯度給他不同,他根據(jù)你的經(jīng)緯度數(shù)組,從第一個到最后一個按照動畫的方式讓其在地圖上移動溶耘,至于中間過程的監(jiān)聽是沒有的二拐,所以做起來就很繁瑣,希望高德地圖能夠改進(jìn)吧凳兵。