rea*_*hat 5 iphone objective-c mkmapview ios android-mapview
我正在map使用MKUserTrackingModeNone,在三种不同的方向模式之间进行切换MKUserTrackingModeFollow,MKUserTrackingModeFollowWithHeading并且可以正常工作。
但是,从切换MKUserTrackingModeFollowWithHeading到时,我无法将地图的方向重置为朝北的方向(地图的北部位于屏幕顶部)MKUserTrackingModeNone。
在的内置地图应用上iphone/ipad,流程如下:
启动应用程序时,它处于模式,MKUserTrackingModeNone并且是北向的。切换方向模式时,它将变为MKUserTrackingModeFollow,并且方向仍然是北的。
再次切换时,它会变为MKUserTrackingModeFollowWithHeading,并且地图会根据您正对着/指向iPhone的方向旋转。
当您再次切换方向时,它会回到MKUserTrackingModeNone,地图会很好地旋转回到北向。
我希望我的应用在切换模式时在方向方面表现出相同的方式,但是当我按照上面的步骤4进行操作并从切换MKUserTrackingModeFollowWithHeading到时MKUserTrackingModeNone,方向保持为刚进行方向切换之前的样子,而不是旋转回北向。
我正在MKUserTrackingBarButtonItem使用工具栏中的标准控件进行方向开关。
任何人都可以帮助我解决此问题?
在 iOS 5 中,它会为您切换北向,但在 iOS 6 中则不会。您可以在 bugreport.apple.com 上提交增强请求。
您可以实现委托回调函数并在委托回调中应用轮换...
- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated
{
if (mode == MKUserTrackingModeNone)
[self rotateTheMapView];
}
- (void)rotateTheMapView {
// See /sf/ask/87182301/
}
Run Code Online (Sandbox Code Playgroud)
问题在于,Apple 不会使用其内部逻辑公开准确的当前旋转,因此 iOS 提供给您的当前航向的任何计算可能会略有偏差,导致您的地图在完成后稍微偏北。