1

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

4

4 回答 4

4

设置CLLocationManager headingFilterkCLHeadingFilterNone或小于默认 1 度。

于 2012-11-19T23:22:04.867 回答
2

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

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

您可能还想对设备方向进行调整。指南针从设备顶部返回航向数据,因此如果您在 LandscapeLeft 中,您需要从航向值中减去 90°, LandscapeRight 您需要在航向值上添加 90°,并且 PortraitUpsideDown 需要调整 180° .

于 2012-08-20T18:21:15.170 回答
1

不是我知道的,不。

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

我不认为 iPhone 上的指南针具有足够高的精度,无法真正自信地说出你所指向的方向是你想要的精度。对不起!

于 2012-04-12T14:12:33.180 回答
0

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

于 2012-10-06T02:33:08.283 回答