3

我在使用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 上测试这个应用程序。

4

3 回答 3

2

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

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

在此处输入图像描述

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

您还可以检查 Apple 的指南针应用程序设置,看看它是否启用了“使用真北”设置。当罗盘校准设置被禁用时,该设置也被禁用。

在此处输入图像描述

唉,Apple 没有提供任何方法来测试这一点,除了观察磁航向可用而真航向不可用,然后假设这一定是因为用户禁用了罗盘校准设置。

于 2020-01-03T19:06:25.687 回答
1

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

在那种情况下iOS想要显示一个校准对话框,如果你不禁止这个对话框。一旦用户通过进行 8 字形动作校准设备,该标题就会生效。

如果由于存在永久强磁场(例如在汽车内部)而无法使用,则根本没有机会获得磁航向。

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

于 2013-04-23T06:59:53.463 回答
0

您可以使用属性检索沿 X、Y 和 Z 轴的原始磁值CLHeading。这些值以微特斯拉为单位进行测量,并归一化为 Apple 规定的-128 到 128的范围。每个轴值代表与设备内置磁力计跟踪的磁场线的偏移量。

有关更多信息,请参阅此链接..书籍

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

于 2013-04-23T06:13:48.047 回答