微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS磁力计向量具有意外值

如何解决iOS磁力计向量具有意外值

当从iOS上的磁力获取北磁场矢量时,我知道有三种方法可以做到这一点。只有第一种方法似乎可以给出合理的结果。根据Compass应用程序,手机的背面平坦,长轴指向97° E

  1. CLLocationManager委托重载didUpdateheading。这为CLheading提供了(x,y,z)的{​​{1}}向量以及其他有用的项,例如磁/真航向,准确性,时间戳。

这似乎很合理!

  1. (-18.4,-15.3 -44.9) cmmotionmanager。这为startMagnetometerUpdates提供了CMMagneticField的{​​{1}}向量。需要清楚的是,Z轴值为负三百七十五微特斯拉。这似乎不合理。如果我旋转手机,则(x,z)的值会波动,但不会低于(36.5,-10.1,-375),这就是手机从上面提供结果的位置反转的时候。

这是尚未被过滤掉的内部磁场吗?

  1. z -283。这为cmmotionmanager提供了属性startDeviceMotionUpdatesCMCalibratedMagneticField的{​​{1}}向量。尽管事件正在迅速且一致地触发,但这似乎没有返回有意义的数据。

为什么它不返回任何值?

解决方法

您似乎对CMMagneticField正确,Apple docs指定其中包括“从设备本身及其周围环境引入的偏见。”

据我所知,当CMMotionManager返回向量(0.0,0.0,0.0)时,它不是properly calibrated。您可以检查精度值以确保这一点。在此StackOverflow answer中可以找到有关校准设备的有用指南。

注意:CMMotionManager返回的磁场与磁力计返回的CMMagneticField不同,因此不包括来自设备的偏置。请参见var magneticField: CMCalibratedMagneticField字段within the docs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。