我目前只使用模拟器,但我在iOS模拟器上的swift中遇到了CoreLocation问题。我获得了由此代码打印的位置更新,但从未标题。我不想要当然,我正在尝试制作一个能够显示目标的罗盘类应用。
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函数,但没有打印任何内容。上面的当前代码将打印位置,但不打印标题。
我怎样才能开始工作?
答案 0 :(得分:2)
指南针不在模拟器支持的硬件交互列表中,而且CLLocationManager headingAvailable报告它在模拟器上不可用。
另外,在本文档中:
某些位置服务需要在给定设备上存在特定硬件。例如,标题信息仅适用于包含硬件指南针的设备。此类定义了几种可用于确定当前可用服务的方法。 具体来说,CLLocationManager具有此类属性来检查指南针是否可用:
print(“headingAvailable:(Int(CLLocationManager.headingAvailable()))”) 输出:
2011-11-08 22:38:26.873 Craplet [39975:b603] headingAvailable:0
答案 1 :(得分:0)
大卫,
我被问到你的问题,这不是答案。这是......
didUpdateHeading heading never called under iOS 11
不知道你是否正在运行iOS 11,测试版是在6月左右我怀疑,但肯定不会在2017年9月发布,但也许这是希望。