我希望能够在iOS中的Mapbox地图上显示用户位置的自定义图像,和能够从内部源设置当前用户位置,而不是使用内部GPS源。
内置用户位置工具似乎只能从Mapbox内部位置引擎中获取位置。我在地图上添加了一个自定义注释,当我得到一个新的位置修复时我可以更新它的位置,但是运动是不稳定的(我可以使用相机动画来平移地图,但不是注释。)
iOS Mapbox SDK中是否有任何方法可以设置更改注释位置的动画?
答案 0 :(得分:0)
所以这就是我想出来的。在MGLMapViewDelegate
我使用didFinishRenderingFrame()
回调来更新位置,在两个最近的位置之间进行插值。
posAnnotation
是与MGLPointAnnotation
相关联的flightMarker
,其MGLAnnotationView
已扩展为添加UIImageView
并保留位置。
override fun didFinishRenderingFrame(mapView: MGLMapView, fullyRendered: Boolean) {
val frac = min((CFDate.getCurrentAbsoluteTime() - lastUpdateTimestamp) / lastUpdateInterval, 1.0)
if(flightMarker.location.valid)
posAnnotation.coordinate = flightMarker.interpolatedLocation(frac)
}
override fun viewForAnnotation(mapView: MGLMapView, annotation: MGLAnnotation): MGLAnnotationView? {
return if (annotation == posAnnotation) flightMarker else null
}