要清楚我的问题是没有在横向或向左的横向中读取标题值。它工作正常我正在使用位置管理器并减去90°来读取横向右侧的标题值和左侧的270°,默认情况下设备始终被视为纵向模式,这就是我们必须进行此调整的原因。
我最近开发了一个基于位置的增强现实应用程序,我正在经历的是,左右横向之间的标题值始终存在偏移。我测试了“在场上”,偏移量约为12°。
我希望这个应用程序尽可能准确,我的意思是因为我们依赖传感器数据这是第一个版本,小于10°是可以接受的(在最坏的情况下甚至是15°)。但是,如果我们将现有误差加上12°的偏移量,那就太烦人了。
有没有人对此有解释?即使我现在无法修复它,我也希望有一个。所以现在我试图通过向左侧的景观添加12°来“修复”这个,或者我可能宁愿减去12°到右侧的景观,我不知道!
有关此问题的任何经验吗?
答案 0 :(得分:8)
我的经验是指南针不是很好,特别是在风景视图中。我不会在一个视图中减去12°,因为差异可能是另一个设备上的其他东西。我建议您在继续之前测试一两台其他iPhone。
另外,您是否设置了LocationManager的视图?
CLLocationManager *compassManager;
compassManager.headingOrientation =CLDeviceOrientationLandscapeLeft;
答案 1 :(得分:1)
我也遇到过这个问题,LandscapeLeft,landscapeRight和Portrait之间存在差异。感谢Sten的回复,下面的Swift代码解决了这个问题。
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) { var text="" switch UIDevice.currentDevice().orientation{ case .Portrait: text="Portrait" locationManager.headingOrientation = CLDeviceOrientation.Portrait case .PortraitUpsideDown: text="PortraitUpsideDown" locationManager.headingOrientation = CLDeviceOrientation.Portrait case .LandscapeLeft: text="LandscapeLeft" locationManager.headingOrientation = CLDeviceOrientation.LandscapeLeft case .LandscapeRight: text="LandscapeRight" locationManager.headingOrientation = CLDeviceOrientation.LandscapeRight default: text="Another" } NSLog("You have moved: \(text)")
}