是否可以在iOS指南针航向中获得低于度的精度



基本上我想知道iPhone高精度指向的方向,我尝试了CLLocationManager:问题是CLHeading.magneticHeading返回一个双精度,例如36.44323,但是当我开始转动设备时,CLLocationManager仅在达到1度时才更新方向,因此数字读作如下:36.44323,37.44323,38.44323等。是否有可能获得更高的准确性?

CLLocationManager headingFilter设置为 kCLHeadingFilterNone 或小于默认值 1 度的任何值。

如果您不关心准确性,但对方向的微小变化感兴趣,那么您可能需要查看CMMotionManager。这是一个属性(deviceMotion),它将允许您获得设备的attitude,特别是yaw。通过记录每次航向更新时偏航和磁航向之间的差异(例如x),您可以获得更新之间的近似航向yaw + x。您将从CMMotionManager收到更及时的更新,因为您可以自己设置deviceMotionUpdateInterval

如果我没记错的话,yaw值以 -pi 和 pi 之间的弧度返回,因此在计算x时需要转换回度数,因为CLLocationManager将返回磁航向是度(0 到 360)。

您可能还需要调整设备方向。指南针从设备顶部返回航向数据,因此如果您在横向左侧,则需要从航向值中减去 90°,横向右侧您需要在航向值上增加 90°,纵向颠倒将需要调整 180°。

不是我知道的,不是。

不要将准确性与正确性混淆;仅仅因为它说 36.44323 并不意味着它精确到小数点后 5 位,该值的误差范围可能是 ±1 度:(

我不认为iPhone上的指南针具有足够高的精度,可以真正自信地说出您指向您想要的精度的方向。不好意思!

如果您需要更高的精度,则应使用陀螺仪。来自 CoreMotion 的设备运动数据应该可以帮助您。指南针确实不够准确。

最新更新