我正在尝试使用 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 委托(delegate)方法中设置了日志记录,但从未收到任何回调/日志。
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(nullable NSError *)error;
- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager;
- (void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager;
最佳答案
当您询问 kCLLocationAccuracyHundredMeters 时,iPhone 根本不使用 GPS,而是依靠手机信号塔和 WiFi 接入点进行三角测量。这意味着 iPhone 会根据 WiFi 扫描的频率更新位置,而这种频率远非连续的。如果您远离 Wi-Fi 覆盖的区域,手机信号塔将成为您唯一的来源,并且只有在手机信号塔之间切换时您才可能开始获取位置更新。
简而言之:
设置准确性告诉 iOS 使用哪个硬件,
距离过滤器告诉 iOS 在用新数据唤醒 CPU 之前要移动多远
关于ios - CLLocationManagerdesiredAccuracy of kCLLocationAccuracyHundredMeters 导致位置更新非常不频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963332/