CLLocationManager trueHeading为-1

时间:2013-04-23 06:03:52

标签: iphone cllocationmanager

我在使用CLLocationManager时面临问题。

我正在使用startUpdatingLocation方法及其委托方法

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

我得到了newHeading.trueHeading

问题是有些时候newHeading.trueHeading返回-1,一旦设备开始返回-1,它保持不变,意味着它总是返回-1。

任何人都可以告诉我这个问题的技术细节和修复方法。

在探索Apple发现的文件时

"A negative value means that the reported heading is invalid, which can occur when the device is uncalibrated or there is strong interference from local magnetic fields."

但没有信息如何避免或解决。

注意:我正在iPhone 4,iPhone 4S,iPad 2和iPad 3等真实设备上测试此应用。

3 个答案:

答案 0 :(得分:1)

  

但没有信息如何避免或解决。

在这种情况下,如果您不取消此对话框,iOS想要显示校准对话框。一旦用户通过图8运动校准设备,标题就会生效。

如果由于存在永久性强磁场(例如汽车内部)而无法工作,那么就没有机会获得磁力航向。

在这种情况下,您可以考虑使用位置管理器中的location.course,它通过GPS测量给出用户移动的方向。

答案 1 :(得分:0)

您可以使用CLHeading属性检索沿X,Y和Z轴的原始磁性值。这些值以微指标表示,并标准化为Apple声明 -128至128 的范围。每个轴值代表与设备内置磁力计跟踪的磁场线的偏移。

请参阅此链接了解更多信息.. books

我希望这会对你有所帮助......

答案 2 :(得分:0)

如果您发现.magneticHeading具有有效的标题(0至360),但.trueheading具有无效的值(-1),则通常意味着用户已关闭以下设置:

隐私权/位置/系统服务/指南针校准

enter image description here

将其重新打开可解决此问题。

您还可以检查Apple的罗盘应用程序设置,以查看其是否启用了“使用True North”设置。禁用“指南针校准”设置后,该设置也会被禁用。

enter image description here

A,Apple除了观察到磁航向可用而没有真航向以外,并没有提供任何其他方法来进行测试,然后假定这一定是因为用户已禁用指南针校准设置。

>