获得视线(iPhone方向)的最佳方法是什么?
我已经使用CoreLocation实现了一个:
func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
self.currentDegreesLOS = newHeading.magneticHeading
if (newHeading.headingAccuracy > 0) {
if self.currentDegreesLOS < 135.0 && self.currentDegreesLOS > 45.0 {
self.currentDegreesLOS = 90.0
}
//South direction
else if self.currentDegreesLOS < 45.0 || self.currentDegreesLOS > 315.0 {
self.currentDegreesLOS = 360.0
}
//West direction
else if self.currentDegreesLOS > 225.0 && self.currentDegreesLOS < 315.0 {
self.currentDegreesLOS = 270.0
}
//North direction
else if self.currentDegreesLOS > 135.0 && self.currentDegreesLOS < 225.0{
self.currentDegreesLOS = 180.0
}
}
}
但是,通过将设备保持在北方方向,我首先尝试360°。如果我在第二次运行时对此进行测试,我将在同一方向上获得180°或270°。
我尝试的另一个解决方案是使用CoreMotion,但我遇到了同样的问题:
motionManager.startDeviceMotionUpdatesToQueue(queue, withHandler: { (data, error) -> Void in
self.quat = data?.attitude.quaternion
//Possibility 1
var attitude:CMAttitude = (data?.attitude)!
var rm:CMRotationMatrix = attitude.rotationMatrix
// Get the heading.
var heading = M_PI + atan2(rm.m22, rm.m12)
heading = heading*180/M_PI
if( heading < 0 ){
heading += 360.0;// convert negative to positive angles
}
})
有人知道如何使用上述方法之一获得最佳效果吗?