我从我的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;
然而,这只适用于手机在桌面上平放的情况。我应该使用什么作为公式来允许我手中的所有电话位置,处于横向模式,以及看上方或下方的设备?
谢谢。