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()
}
所以我一直在接收航向更新,直到我得到有用的结果。
我正在尝试获取罗盘航向的单个准确值(然后我将其与 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()
}
所以我一直在接收航向更新,直到我得到有用的结果。