【问题标题】:CLLocationManager heading with tilted device带有倾斜设备的 CLLocationManager 航向
【发布时间】:2014-03-11 10:55:43
【问题描述】:

我正在开发一个同时使用 iPhone 的磁力计和加速度计的应用程序。我注意到的问题是,当设备向后倾斜时,它会达到一个临界点,在该点处方向值反转(iOS 似乎认为设备已经旋转)。起初我认为检查设备方向何时更改([UIDevice currentDevice].orientation)会很简单,但 * 在发送设备方向更改通知之前(至少倾斜 15 度),航向值会显着反转。

如果此描述令人困惑,我深表歉意,但您可以通过以下实验轻松看到我的问题:

在 iPhone 上打开指南针应用并校准指南针。校准后,在纵向模式下将 iPhone 竖直向上和向下握住,屏幕下方的主屏幕下方。现在慢慢向后倾斜手机(这样相机就更直接地朝上)。您将到达指南针突然反转方向的点。不幸的是,这一点与操作系统识别设备方向变化的点无关。

我的问题是我需要继续注册原始方向的航向,因为我实际上并没有转动设备,它显然仍然指向前方(在原始方向上)。我已经在这个临界点测试了设备的角度,并通过这种方式成功地对其进行了校正,但是由于加速度计的噪声,我在临界角附近得到了非常不稳定的结果。我还尝试了位置管理器的 headingOrientation 属性,但没有成功。如果有人找到解决这种情况的方法,将不胜感激!

干杯。

【问题讨论】:

  • 问题解决了吗?
  • 我只是在研究同样的问题。当我开始向北或向南时,我看到罗盘反向,但是当我向东或向西时,会有一个小的跳跃,但罗盘没有反向。

标签: ios iphone accelerometer cllocationmanager heading


【解决方案1】:

了解更多关于您为什么需要它的背景知识将有助于提供更好的答案。 在进行您描述的移动时,设备的顶部实际上指向相反的方向。
为了弥补这一点,您需要添加一个过滤器并根据设备角度和航向的先前状态确定设备角度和航向的新状态。知道设备角度接近临界相位并且知道航向突然反转 180° 应该可以让您区分这种情况。您可以将陀螺仪信息添加到过滤器以使用设备旋转速率并确定设备正在超过临界角。

【讨论】:

  • 我已经确定了临界角是多少,目前正在根据该假设对其进行过滤,但不幸的是,当设备长时间保持在临界角附近时,加速度计的不准确性时间,航向来回摆动。我想知道是否有办法在位置经理进行 180 度校正时收到通知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2020-04-12
  • 2023-03-23
相关资源
最近更新 更多