我从我的 CMMotionManager 收到 RotationMatrix 并想从中计算我手机的航向,例如北纬 38 度(并避免 CLLocationManager),以便制作更准确的指南针:
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *deviceMotion, NSError *error) {
CMRotationMatrix rm = deviceMotion.attitude.rotationMatrix;
// Get the heading.
motionHeading = M_PI + atan2(rm.m22, rm.m12);
motionHeading = motionHeading*180/M_PI;
但是,这仅在手机平放在桌子上时才有效。我应该使用什么公式来允许我手中所有手机的位置,处于横向模式,以及设备在地平线上方或下方?
谢谢。