我正在使用 MKUserTrackingModeNone
、MKUserTrackingModeFollow
、MKUserTrackingModeFollowWithHeading
在三种不同的map
方向模式之间切换,这有效.
但是,当从 MKUserTrackingModeFollowWithHeading
切换到 MKUserTrackingModeNone 时,我遇到了一个问题, map 的方向没有重置为朝北的方向( map 上的北方在屏幕顶部)
。
在iphone/ipad
的内置 map 应用上,流程是这样的:
当您启动应用程序时,它处于 MKUserTrackingModeNone
模式并且是北向的
当您切换方向模式时,它会更改为 MKUserTrackingModeFollow
,并且方向仍然是北方。
当您再次切换时,它会变为 MKUserTrackingModeFollowWithHeading
,并且 map 会根据您面对/指向 iPhone 的方向旋转。
当您再次切换方向时,它会返回到 MKUserTrackingModeNone
, map 会很好地旋转回北方。
我希望我的应用程序在切换模式时在方向方面以相同的方式运行,但是当我按照上面的第 4 步执行操作并从 MKUserTrackingModeFollowWithHeading
切换到 MKUserTrackingModeNone
,方向保持在进行方向切换之前的状态,而不是旋转回北方向。
我正在使用放置在工具栏中的标准 MKUserTrackingBarButtonItem
控件进行方向切换。
谁能帮我解决这个问题?
最佳答案
我在运行 iOS 6.1.4 的 iPhone 5 上也遇到了这个问题。我使用这个简单但丑陋的快速修复来强制 map View 旋转回北:
-(void)someMethod
{
// Currently in MKUserTrackingModeFollowWithHeading mode
// Set tracking mode back to MKUserTrackingModeFollow
[_mapView setUserTrackingMode:MKUserTrackingModeFollow];
// After a short delay, set mode to MKUserTrackingModeNone
[self performSelector:@selector(mapViewTrackingModeNone)
withObject:nil
afterDelay:0.2];
}
- (void)mapViewTrackingModeNone
{
[_mapView setUserTrackingMode:MKUserTrackingModeNone];
// Bang! The map rotates back to North-Up
}
可能有更好的方法来做到这一点,但我还没有找到。
关于iphone - 从 MKUserTrackingModeFollowWithHeading 切换模式时如何始终保持 iOS 6 中的 MKMapView 朝北,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15984500/