我目前只使用模拟器,但在 iOS 模拟器上 CoreLocation in swift 遇到了问题。我通过此代码获得了位置更新,但没有航向。我不想要当然,我正在尝试制作一个指南针类型的应用程序,它会显示目标的方位。
class CompassViewController: UIViewController, CLLocationManagerDelegate {
var lm:CLLocationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
print ("view did load")
lm.delegate = self;
lm.desiredAccuracy = kCLLocationAccuracyBest
lm.requestWhenInUseAuthorization()
lm.startUpdatingLocation()
lm.startUpdatingHeading()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
var locValue:CLLocationCoordinate2D = manager.location!.coordinate
var course = manager.location!.course
print("locations = \(locations)")
}
func headingManger(_ manager: CLLocationManager, didUpdateHeading: [CLHeading]) {
var heading = manager.heading?.magneticHeading
print("heading = \(heading)")
}
}
我已经尝试了几种组合。我尝试做一个处理位置和航向的函数,但根本没有打印任何数据。我也试过只使用 headingManager 函数,但没有打印任何内容。上面的当前代码将打印位置,而不是标题。
我怎样才能去上类?
最佳答案
Compass 不在模拟器支持的硬件交互列表中,CLLocationManager headingAvailable 报告它在模拟器上不可用。
此外,在本文档中:
一些位置服务需要在给定的设备上存在特定的硬件。例如,航向信息仅适用于包含硬件罗盘的设备。此类定义了几种方法,您可以使用这些方法来确定当前可用的服务。 具体来说,CLLocationManager 有这个类属性来检查指南针是否可用:
- (BOOL)headingAvailable 如果我在模拟器下运行它:
print("headingAvailable: (Int(CLLocationManager.headingAvailable()))") 输出:
2011-11-08 22:38:26.873 Craplet[39975:b603] headingAvailable: 0
关于ios - 可以获取位置,但不能获取航向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479865/