運動軌跡回放高德官方有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]