CLLocationManager类文档中,我找到了distanceFilter属性的此类解释:

此属性仅与标准位置结合使用
服务,并且在监视重大位置更改时不使用。

你能解释一下吗?

最佳答案

CLLocationManager中,distanceFilter用于在设备移动x米时通知更改。默认值为kCLDistanceFilterNone:,报告所有运动。

docs

返回当前位置修正后,接收方生成更新
仅在用户位置发生重大变化时发生事件
检测到。例如,当设备
变得与另一个手机信号塔相关联它不依赖
distanceFilter属性中的值以生成事件。

通过调用startUpdatingLocation启动标准位置服务
方法。此服务最适合需要
对位置事件的传递进行更细粒度的控制。
具体来说,它考虑了期望精度中的值
和distanceFilter属性来确定何时传递新事件。
标准定位服务的精度需要
导航应用程序或高精度的任何应用程序
位置数据或常规更新流。然而,
这些服务通常需要使用位置跟踪硬件
启用更长的时间,这可能会导致更高的功率
用法。

这就是为什么distanceFilter仅与标准位置服务结合使用,而在监视重大位置变化(例如)时不使用desiredAccuracy的原因。 heading或ojit_code信息。

这是因为通常知道一个人移动了x米并没有真正的用处。但是,知道某人已经以z精度在y方向移动了x米非常有价值。

08-17 00:33