【问题标题】:Can Get Location, but not heading可以获取位置,但无法获取航向
【发布时间】:2017-09-29 21:33:16
【问题描述】:

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

我怎样才能上班?

【问题讨论】:

  • 获取航向需要带有指南针的设备,而模拟器没有。
  • 那么只有在设备上使用 compass 测试应用程序的方法吗?
  • 是的,您需要一个带有内置指南针的设备。
  • 好的,现在我通过 X 代码在我的 iPhone 上运行相同的代码,但我仍然没有得到指南针方向。我的位置是输出,但不是指南针方向。

标签: ios swift core-location


【解决方案1】:

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

另外,在这个文档中:

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

某些定位服务需要在给定设备上安装特定硬件。例如,航向信息仅适用于包含硬件罗盘的设备。此类定义了几种方法,您可以使用这些方法来确定当前可用的服务。 具体来说 CLLocationManager 有这个类属性来检查指南针是否可用:

  • (BOOL)标题可用 如果我在模拟器下运行它:

print("headingAvailable: (Int(CLLocationManager.headingAvailable()))") 输出:

2011-11-08 22:38:26.873 Craplet[39975:b603] 标题可用:0

【讨论】:

  • 好的,我现在在手机上运行相同的代码,但仍然只能获取位置而不是标题。
  • 你需要在手机中设置指南针功能然后试试这个代码..它会工作
  • 你是怎么做到的?
  • 有很多例子你可以试试苹果官方,例如。 developer.apple.com/library/content/documentation/…
【解决方案2】:

大卫,

我被提到了你的问题,这不是答案。这是……

didUpdateHeading heading never called under iOS 11

不知道你是否正在运行 iOS 11,我怀疑测试版在 6 月左右,但肯定要到 2017 年 9 月才发布,但也许这是希望。

【讨论】:

    猜你喜欢
    • 2020-09-21
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2011-12-07
    相关资源
    最近更新 更多