可以获得位置,但不能前往

时间:2017-06-11 02:34:31

标签: ios swift core-location

我目前只使用模拟器,但我在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函数,但没有打印任何内容。上面的当前代码将打印位置,但不打印标题。

我怎样才能开始工作?

2 个答案:

答案 0 :(得分:2)

指南针不在模拟器支持的硬件交互列表中,而且CLLocationManager headingAvailable报告它在模拟器上不可用。

另外,在本文档中:

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

某些位置服务需要在给定设备上存在特定硬件。例如,标题信息仅适用于包含硬件指南针的设备。此类定义了几种可用于确定当前可用服务的方法。 具体来说,CLLocationManager具有此类属性来检查指南针是否可用:

  • (BOOL)headingAvailable 如果我在模拟器下运行:

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月发布,但也许这是希望。