在CLLocationManager
类文档中,我找到了distanceFilter
属性的此类解释:
此属性仅与标准位置结合使用
服务,并且在监视重大位置更改时不使用。
你能解释一下吗?
最佳答案
在CLLocationManager
中,distanceFilter
用于在设备移动x米时通知更改。默认值为kCLDistanceFilterNone:
,报告所有运动。
从docs
返回当前位置修正后,接收方生成更新
仅在用户位置发生重大变化时发生事件
检测到。例如,当设备
变得与另一个手机信号塔相关联它不依赖
distanceFilter
属性中的值以生成事件。
通过调用startUpdatingLocation启动标准位置服务
方法。此服务最适合需要
对位置事件的传递进行更细粒度的控制。
具体来说,它考虑了期望精度中的值
和distanceFilter属性来确定何时传递新事件。
标准定位服务的精度需要
导航应用程序或高精度的任何应用程序
位置数据或常规更新流。然而,
这些服务通常需要使用位置跟踪硬件
启用更长的时间,这可能会导致更高的功率
用法。
这就是为什么distanceFilter
仅与标准位置服务结合使用,而在监视重大位置变化(例如)时不使用desiredAccuracy
的原因。 heading
或ojit_code信息。
这是因为通常知道一个人移动了x米并没有真正的用处。但是,知道某人已经以z精度在y方向移动了x米非常有价值。