在iOS上相对于地理北方获得俯仰,翻滚和偏航?

问题描述 投票:3回答:1

我看到我可以从设备中检索CMAttitude,从中我可以读取我需要的3个值(俯仰,滚动和偏航)。据我了解,这个CMAttitude对象由CoreMotion管理,CoreMotion是一个传感器融合管理器,用于计算罗盘,陀螺仪和加速度计的正确结果(在Android上它是SensorManager类)。

所以我的问题是:

  1. 那些值(俯仰,滚转和偏航)是相对于磁北和重力吗?
  2. 如果以上是正确的,我如何修改它以给我相对于地理北方的结果?
  3. 如果设备(例如iPhone 3GS)没有陀螺仪,我是否必须告诉管理员,或者我可以告诉它根据设备的传感器给我设备的态度(acc + gyro + compas OR acc + compas)
ios core-motion pitch geographic-distance
1个回答
6
投票
  1. 和2:

iOS 5.0简化了此任务。 CMMotion经理有新方法:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

作为参考框架,您可以使用以下值:

  • 磁北的CMAttitudeReferenceFrameXMagneticNorthZVertical,
  • CMAttitudeReferenceFrameXTrueNorthZVertical为真正的北方。

如果你想用旧的iOS做这个,我担心你必须自己使用当前的用户位置进行校准。

尝试结帐此资源:

3.如果设备没有陀螺仪,CMMotionManger的deviceMotionAvailable属性将为“NO”(它相当于gyroAvailable属性),并且您无法使用设备运动获得态度。您唯一能做的就是直接读取加速度计和磁力计数据。

© www.soinside.com 2019 - 2024. All rights reserved.