仿悅跑圈軌跡回放

2021-09-11 15:33:02 字數 1905 閱讀 5545

運動軌跡回放高德官方有demo,但需要運動物實時居中

**在這裡

先上最後效果圖

建立cadisplaylink當作計時器,不要用nstimer(不精確)

frameinterval 幀間隔,相當於每隔多久重新整理一次 (設定為1,代表1/60秒重新整理一次,例項中設的是2幀)

dplink = cadisplaylink(target: self, selector: #selector(viewcontroller.update))

dplink?.frameinterval = minframeinterval

dplink?.ispaused = false

dplink?.add(to: runloop.current, formode: runloopmode.commonmodes)

複製**

在update方法中持續改變地圖中心,地圖旋轉角度,地圖相機角度

self.mapview.setcenter(tracecoordinates[uptateindex+1], animated: false)

self.mapview.setrotationdegree(cgfloat(yvangle) , animated: false, duration: 1)

self.mapview.setcameradegree( cgfloat(yvangle), animated: false, duration: 1)

複製**

uptateindex 每次加1,temporarytracecoordinates臨時存當前位置之前的所有值,polyline每次替換為後一條

if

let line = self.polyline

polyline = mapolyline(coordinates: &temporarytracecoordinates, count: uint(temporarytracecoordinates.count))

複製**

**方法裡改變線條顏色

func mapview(_ mapview: mamapview!, rendererfor overlay: maoverlay!) -> maoverlayrenderer! 

return nil

}複製**

poiannotationview?.image 設定運動物體的

func mapview(_ mapview: mamapview, viewfor annotation: maannotation) -> maannotationview? 

poiannotationview?.image = uiimage(named: "userheadimage")

poiannotationview?.imageview.layer.cornerradius = 20

poiannotationview?.imageview.layer.maskstobounds = true

poiannotationview?.imageview.backgroundcolor = uicolor.white

poiannotationview?.imageview.layer.bordercolor = uicolor.white.cgcolor

poiannotationview?.imageview.layer.borderwidth = 2

poiannotationview!.canshowcallout = false

return poiannotationview

}return nil

}複製**

發現bug或好的建議歡迎 issues or email [email protected]