ios - 未调用 locationManagerShouldDisplayHeadingCalibration

标签 ios cllocationmanager compass calibration heading

我有一个简单的 iOS 应用程序,它使用标题。然而由于精度很差(10到25度),我实现了locationManagerShouldDisplayHeadingCalibration函数。然而它永远不会被调用。这是我的代码:

    ...
    locmanager = [CLLocationManager new];

    [locmanager setDelegate:self];
    [locmanager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locmanager setHeadingFilter:kCLHeadingFilterNone];
    [locmanager setHeadingOrientation:CLDeviceOrientationLandscapeLeft|CLDeviceOrientationLandscapeRight];
    if ([CLLocationManager locationServicesEnabled])
    {

        [locmanager startUpdatingLocation];
        [locmanager startUpdatingHeading];
    }
    ...

- (void)locationManager:(CLLocationManager*)manager didUpdateHeading:(CLHeading*)newHeading
{
     // This one gets called
}

- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager
{
     // This one does NOT get called
     NSLog ("Here");
     return YES;
}

我应该怎么做才能校准 compass ?谢谢。

最佳答案

苹果官方文档:

Core Location may call this method in an effort to calibrate the onboard hardware used to determine heading values. Typically, Core Location calls this method at the following times:

The first time heading updates are ever requested

When Core Location observes a significant change in magnitude or inclination of the observed magnetic field

因此,您的校准完全有可能已经很好并且不需要设置。请注意,该方法永远不会在模拟器中被调用。

尝试将 MKMapView 与 MKUserTrackingMode.FollowWithHeading 结合使用,看看是否出现校准窗口。您的委托(delegate)可能仍然不会被调用,因为 MKMapView 通过它自己的私有(private)位置管理器委托(delegate)来调用它。

您还可以尝试在设备上的“设置”->“位置服务”->“系统服务”中关闭 compass 校准。

关于ios - 未调用 locationManagerShouldDisplayHeadingCalibration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27869700/

相关文章:

ruby-on-rails - Windows 7 64 位 : Could not find a valid gem 'compass' (>= 0), 这里就是为什么 : Unable to download data from https://rubygems. org/

ruby - gem 安装 compass 不起作用

ios - 方法中实例变量的更改不反射(reflect)原始实例变量的更改

ios - 在展开 UITableVewCell 自定义单元格类的 Optional 值时意外发现 nil

cllocationmanager - 在 iOS 8 上本地化用户

ios - 了解 iOS 中用户位置的后台跟踪

ios - locationManager didUpdateLocations 在设备上触发两次,在模拟器上只触发一次

sass - 配置 compass 浏览器支持( compass 1.x 语法)

iOS:动画多个 UIBezierPaths(一个接一个)?

ios - 创建一个 Sprite 并给它一个自定义类