首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在从MKUserTrackingModeFollowWithHeading切换模式时始终使iOS 6中的MKMapView保持北向

如何在从MKUserTrackingModeFollowWithHeading切换模式时始终使iOS 6中的MKMapView保持北向
EN

Stack Overflow用户
提问于 2013-04-13 13:13:23
回答 3查看 3.2K关注 0票数 6

我正在使用MKUserTrackingModeNoneMKUserTrackingModeFollowMKUserTrackingModeFollowWithHeading在三种不同的map定位模式之间切换,这是可行的。

然而,当从MKUserTrackingModeFollowWithHeading切换到MKUserTrackingModeNone时,我遇到了地图的方向没有重置为北向方向(地图上的北方向在屏幕顶部)的问题。

iphone/ipad的内置地图应用程序上,流程如下:

当你启动应用程序时,它处于MKUserTrackingModeNone模式,并且是北向当你切换方向模式时,它会变成MKUserTrackingModeFollow,方向仍然是北。

再次切换时,它将更改为MKUserTrackingModeFollowWithHeading,并且贴图将根据您面对/指向iPhone的方向进行旋转。

当您再次切换方向时,它将返回到MKUserTrackingModeNone,并且地图将很好地旋转回北向。

我希望我的应用程序在切换模式时以相同的方式处理方向,但当我像上面的步骤4那样做并从MKUserTrackingModeFollowWithHeading切换到MKUserTrackingModeNone时,方向保持不变,就像进行方向切换之前一样,而不是旋转回北方向。

我正在使用放置在工具栏中的标准MKUserTrackingBarButtonItem控件进行方向切换。

有人能帮我解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2013-05-16 07:46:11

我在运行iOS 6.1.4的iPhone 5上也遇到了这个问题。我使用了这个简单但丑陋的快速修复来强制地图视图旋转回北上:

代码语言:javascript
复制
-(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
}

可能有一种更好的方法可以做到这一点,但我还没有找到。

票数 1
EN

Stack Overflow用户

发布于 2013-04-20 03:01:54

在iOS 5中,它会自动向北切换,但在iOS 6中不会。您可以在bugreport.apple.com上提交增强请求。

您可以实现委托回调函数,并在委托回调中应用旋转...

代码语言:javascript
复制
- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated
{
    if (mode == MKUserTrackingModeNone)
        [self rotateTheMapView];
}

- (void)rotateTheMapView {
    // See https://stackoverflow.com/q/1245461/1445366
}

(有关旋转说明和代码,请参阅Rotate MapView using Compass orientation。)

问题是,苹果不会使用其内部逻辑来显示准确的当前旋转,所以iOS提供给你的当前方向的任何计算可能会略有偏差,导致当你完成时,你的地图会稍微偏北。

票数 0
EN

Stack Overflow用户

发布于 2013-04-22 02:57:25

您应该组合一个小的测试应用程序,其中只有一个地图视图和一个MKUserTrackingBarButtonItem,并将两者链接在一起。如果它应该按照您所描述的那样做,并且不需要一行代码。所有的连接都可以在IB中完成。一旦你看到它在工作,你就可以返回到你的代码并重复这个过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15984500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档