【问题标题】:Why does my heading not change using Core Location?为什么我的标题没有使用核心位置改变?
【发布时间】:2013-03-12 22:51:21
【问题描述】:

我正在使用带有 iOS 5.1.1 的 WiFi iPad 第一代

我已经设置了类似于此博客文章的核心位置: http://blog.objectgraph.com/index.php/2012/01/10/how-to-create-a-compass-in-iphone/

在:

- (void)locationManager:(CLLocationManager*)manager
didUpdateHeading:(CLHeading*)heading

我记录了真正的航向值:

NSLog(@"heading: %f", manager.heading.trueHeading);

无论我将 iPad 指向哪个方向,结果始终是“真航向:-1.000000”。

我已经在所有 3 轴上旋转了设备并在设置中启用了定位服务。

关于为什么这不起作用的任何想法?航向报告是否不适用于第一代 iPad?

【问题讨论】:

  • 'YES == manager.headingAvailable' 吗?
  • NSLog(@"标题可用:%@", (manager.headingAvailable ?@"Yes" : @"No") == YES
  • 答案是肯定的? (您上面的代码缺少括号。)
  • 是的,标题可用,每次移动设备时都会发送更新,但标题始终相同

标签: iphone ios ipad core-location


【解决方案1】:

这对我有帮助:

  1. 选择定位服务(在隐私设置下)
  2. 选择应用列表底部的系统服务(在定位服务中)
  3. 打开您的指南针校准

这样看来,trueheading-values 不再是 -1 了!

(见下图)!

【讨论】:

  • 谢谢,但我不能标记为正确,因为这是一个旧项目,我不再从事它了。我投了赞成票,希望如果其他人遇到这个问题,它会帮助他们。
【解决方案2】:

要获得有效的航向数据,您还必须配置 CLLocationManager 以更新位置。来自 Apple 文档:

注意:如果您希望标题对象包含 trueHeading 属性,您的位置管理器对象也应该是 配置为提供位置更新。您可以开始交付 这些更新通过调用位置管理器对象的 startUpdatingLocation 方法。

因此调用startUpdatingLocation

请注意,“朝向”是指已定义的设备轴指向的方向。您可以使用 [UIDevice currentDevice].orientation 读取的“方向”告诉您设备的倾斜度。

【讨论】:

  • 这太奇怪了。我使用 kCLLocationAccuracyBest 设置应用程序,headingFilter 为 1,设置委托,称为 startUpdatingLocation 和 startUpdatingHeading。每次移动设备时我仍然会得到 -1.000000,即使在围绕所有 3 个轴旋转几次之后也是如此。但是,我能够获得磁航向。
【解决方案3】:

-1 表示指南针航向无效。您可能需要执行指南针校准。

【讨论】:

  • 我将设备围绕所有 3 个轴旋转了几次,但没有任何变化。
  • 你应该看看heading.trueHeading,而不是manager.heading.trueHeading
  • 已更改,但仍得到 -1.000000 结果:(
猜你喜欢
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多