是否有可能在iOS罗盘标题中获得不到一定程度的准确度?

时间:2012-04-12 14:07:42

标签: ios compass-geolocation magnetometer heading

基本上我想知道iPhone高精度指向的方向,我试过CLLocationManager:问题是CLHeading.magneticHeading返回一个双重例如36.44323然后当我开始转动设备时,CLLocationManager只更新它的方向达到1度,所以读数如下:36.44323,37.44323,38.44323等。是否可以更准确?

4 个答案:

答案 0 :(得分:4)

CLLocationManager headingFilter设置为kCLHeadingFilterNone或任何低于默认1度的内容。

答案 1 :(得分:2)

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

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

您可能还想调整设备方向。指南针从设备顶部返回标题数据,因此如果您在landscapeLeft中,则需要从标题值减去90°,landscapeRight您需要在标题值上添加90°并且portraitUpsideDown需要调整180° 。

答案 2 :(得分:1)

不是我知道的,不。

不要将准确性与正确性混为一谈;只是因为它说36.44323并不意味着它精确到5位小数,该值的误差界限可能是±1度:(

我不认为iPhone上的指南针具有足够高的精确度,可以用任何真正的信心说出您指向所需精度的方向。遗憾!

答案 3 :(得分:0)

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