Objective c 哪个iOS类/代码返回磁北?
我想得到设备与磁北的偏差,以度为单位,并在我正在编写的一些代码中使用该值 我不想使用设备的定位服务,因此我不想得到真正的北方,而是磁北方(只使用设备的磁强计) 哪一类(或编码过程…)可以为我提供该值(仅依靠磁强计) CLLocationManager类及其属性依赖于启用/可用的位置服务 其中,作为核心运动框架的CMMagnetometerData类为我们提供了以下属性:Objective c 哪个iOS类/代码返回磁北?,objective-c,ios,magnetometer,heading,Objective C,Ios,Magnetometer,Heading,我想得到设备与磁北的偏差,以度为单位,并在我正在编写的一些代码中使用该值 我不想使用设备的定位服务,因此我不想得到真正的北方,而是磁北方(只使用设备的磁强计) 哪一类(或编码过程…)可以为我提供该值(仅依靠磁强计) CLLocationManager类及其属性依赖于启用/可用的位置服务 其中,作为核心运动框架的CMMagnetometerData类为我们提供了以下属性: @property(readonly, nonatomic) CMMagneticField magneticField A
@property(readonly, nonatomic) CMMagneticField magneticField
A structure containing 3-axis magnetometer data
typedef struct {
double x;
double y;
double z;
} CMMagneticField;
我如何从中获得学位?或者是否有其他方法(类别/属性/方法)可以单独从磁强计中获取度数
提前感谢您向任何人提供有关该问题的有用信息!:) 表示CMMagneticField数据为原始数据,这意味着它包括从设备本身及其周围引入的偏差。提供过滤后的相同磁场值
要确定磁北,你应该使用过滤后的值,并且设备应该与地球表面平齐
知道磁场的x和y值后,可以使用以下公式计算角度(从磁北的偏角,单位为度):
你需要融合传感器来模拟苹果的应用程序。他们使用陀螺仪加速计和磁强计,以及先进的数学,你可能会也可能没有学会产生这样干净的结果。祝你好运你可能无法模仿它们。如果我想得到磁北极,不管我如何拿着设备,该怎么办?e、 g.无论我如何拿着iPhone 4S,iPhone 4S上的数字指南针都会返回磁北(位置服务已禁用)。我怎么能做到呢?你建议的公式是无效的目标CTo要获得磁北,无论你如何握住设备,我想你应该使用CMDeviceMotion的过滤磁值,而不是CMMagnetometerData的未过滤值。这种措辞似乎使您可以仅使用x和y变量计算磁偏角。这是不可能的。计算赤纬时需要经度、纬度、海拔和时间。如这段Android源代码所示,计算它。你读过这个问题了吗?请仔细核对作者的要求。
if (y>0): heading = 90.0 - [arcTan(x/y)]*180/π
if (y<0): heading = 270.0 - [arcTAN(x/y)]*180/π
if (y=0, x<0): heading = 180.0
if (y=0, x>0): heading = 0.0
double heading = 0.0;
double x = magnetometerData.magneticField.x;
double y = magnetometerData.magneticField.y;
double z = magnetometerData.magneticField.z;
if (y > 0) heading = 90.0 - atan(x/y)*180.0/M_PI;
if (y < 0) heading = 270.0 - atan(x/y)*180.0/M_PI;
if (y == 0 && x < 0) heading = 180.0;
if (y == 0 && x > 0) heading = 0.0;