在iOS上获得相对于地理北的俯仰、横滚和偏航?

在iOS上获得相对于地理北的俯仰、横滚和偏航?,ios,core-motion,pitch,geographic-distance,Ios,Core Motion,Pitch,Geographic Distance,我看到我可以从一个设备中检索,从中我可以读取我需要的3个值(俯仰、侧倾和偏航)。 据我所知,这个Cmatitude对象由CoreMotion管理,CoreMotion是一个传感器融合管理器,用于计算罗盘、陀螺仪和加速计的正确结果(在Android上是SensorManager类) 所以我的问题是: 这些值(俯仰、横滚和偏航)是否与磁北和重力有关 如果以上是正确的,我如何修改它以给出相对于地理北部的结果 如果一台设备(如iPhone 3GS)没有陀螺仪,我是否必须告诉Manager,或者我是否可以

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

所以我的问题是:

  • 这些值(俯仰、横滚和偏航)是否与磁北和重力有关

  • 如果以上是正确的,我如何修改它以给出相对于地理北部的结果

  • 如果一台设备(如iPhone 3GS)没有陀螺仪,我是否必须告诉Manager,或者我是否可以告诉它根据它拥有的传感器(acc+陀螺仪+compasacc+compas)给出设备的姿态

  • 和2:
  • iOS 5.0简化了这项任务。CMMotion manager有了新的方法:

    
    - (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame
    
    作为参照系,您可以使用以下值:

    • CmatitudeReferenceFramexMagneticNorthzVertical用于磁北
    • CmatitudeReferenceFramextrueNorthzVertical表示正北
    如果你想在旧版iOS上实现这一点,恐怕你必须使用当前用户位置自行校准

    请尝试签出此资源:

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

    Tnx以获取回复。这意味着如果我设置ReferenceFrame CmatitudeReferenceFrame ExtrueNorthzVertical,我必须启用GPS,因为iOS也会使用我的当前位置?1.二,。我也想支持4.0操作系统,所以我必须考虑一下。3.我可以不支持3GS,也可以只使用加速计和compas计算设备的方向。你看,我的代码1中有3个检查。isOS5-使用CMAttitudeReferenceFrameXTrueNorthZVertical 2。isOS4-校准3。是3GS-我不能得到姿态,所以我只能用加速计和compas计算。我刚刚看完这两个视频,它澄清了很多,tnx。我已经研究了一段时间,但我找不到我想要的。那件事与iOS4有关。你能告诉我一些关于如何在iOS4上获取这些值的提示或指南吗?