在MKMapView中平滑跟随用户的位置

Jak*_*ubM 6 cocoa-touch objective-c mkmapview

我想像谷歌地图一样遵循用户的蓝点.这意味着当位置发生变化时,地图(或它的中心)应该顺利地跟随它.但是当我使用委托的标准方式时:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    [map setCenterCoordinate:map.userLocation.coordinate animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

或关键值观察者mapview.userLocation然后移动地图是非常"波涛汹涌",即使我使用animated参数,它也会迅速"跳"到新位置.

此外,我认为蓝点本身并不像原生谷歌地图应用程序那样平稳地移动,并且经常跳转到新位置而不是移动到那里.

谢谢你的帮助.

d0n*_*n13 3

嗨,杰克

我也尝试解决这个问题,但看起来 MKMapView 可能在更新之间使用一些奇特的东西来预测下一个位置并使移动更平滑。

如果你看看他们处理指南针的方式,他们会做很多过滤,因为原始指南针数据不是很稳定,所以他们让它变得非常光滑和流畅。

另外,请注意,跟踪时您可以缩放但不能平移。即使关闭滚动,我也未能在我的应用程序中复制此功能,当您缩放时,如果您平移手指,它仍然会滚动。

我想他们不会暴露一切只是为了领先我们:) D