swift - 获取准确的罗盘航向(磁航向和精度)

swift - get accurate compass heading (magneticHeading and accuracy)

我正在尝试获取罗盘航向的单个准确值(然后我将其与 gyro/accelerometer 一起用于计算偏差)。

问题是,如果我在第一个结果后停止更新标题,我会得到标题值 0.0 吗?

我知道一些定位服务需要 运行 一段时间才能给出准确的结果,但是如何为 newHeading.magneticHeading 实现这一点?

有什么建议吗? (我将 CoreLocation 与 CLLocation 管理器一起使用)

func locationManager(manager: CLLocationManager,
    didUpdateHeading newHeading: CLHeading) {
        referenceHeading = newHeading.magneticHeading
        print("New reference heading = \(newHeading.magneticHeading)")
        gotReferenceHeading = true
        locationManager.stopUpdatingHeading()
}

我根据 @jtbandes 的建议添加了一个基于 headingAccuracy 的 if 语句。

if newHeading.headingAccuracy > 0 {
    referenceHeading = newHeading.magneticHeading
    gotReferenceHeading = true
    locationManager.stopUpdatingHeading()
}

所以我一直在接收航向更新,直到我得到有用的结果。