CLLocationManager desiredCcLocationAccuracyHundredMeters的精度导致位置更新非常罕见

时间:2017-10-26 20:34:05

标签: ios objective-c cllocationmanager cllocation

我正在尝试将 kCLLocationAccuracyHundredMeters 的位置准确度用于我的应用程序中的标准位置更新,这似乎相对较好,但每隔一段时间我会收到10分钟更新之间的差距(在不同方向上绕多个英里行驶时)似乎与设置不符。以下是我的位置管理员的设置。此外,我只使用前景位置更新,所以对于这些测试,我在整个时间都有屏幕,应用程序总是在前台。

self.locManager = [[CLLocationManager alloc] init];
self.locManager.delegate = self;
self.locManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
self.locManager.distanceFilter = 15;

我尝试使用相同的其他设置 kCLLocationAccuracyBest ,并在整个驱动器中获得完美的测量值,但我不需要那么准确的位置。我认为百米精度仍会提供相对一致的更新,准确度较低,这正是我们所寻求的。

这只是使用 kCLLocationAccuracyHundredMeters 设置与kCLLocationAccuracyBest的副作用吗?

在iPhone 6s上测试:11.0.2和iPhone 7Plus:11.0.3

感谢任何帮助,谢谢!

修改

我应该澄清一下我在下面列出的CLLocationManager委托方法中设置了日志记录,但从未收到任何回调/日志。

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(nullable NSError *)error;
- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager;
- (void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager;

1 个答案:

答案 0 :(得分:1)

当你要求kCLLocationAccuracyHundredMeters时,iPhone根本不使用GPS,而是依靠手机信号塔和wifi接入点进行三角测量。这意味着iPhone会以wifi扫描的频率更新位置,这远非连续性。如果您远离具有无线覆盖范围的区域,手机信号塔将成为您唯一的来源,只有在手机信号塔之间切换时才可能开始获取位置更新。

简短地说:

  • 设置准确性告诉iOS使用哪种硬件,

  • 距离过滤器告诉iOS在使用新数据唤醒CPU之前要移动多远