在CLLocationManager
类文档中,我找到了distanceFilter
属性的解释:
此属性仅与标准位置一起使用 在监控重要的位置变化时不使用服务。
你能解释一下吗?
答案 0 :(得分:1)
在CLLocationManager
中,distanceFilter
用于在设备移动x米时通知更改。默认值为kCLDistanceFilterNone:
报告所有移动。
来自docs
返回当前位置修复后,接收器会生成更新 仅当用户位置发生重大变化时才会发生事件 检测。例如,它可能会在设备生成新事件 变得与不同的细胞塔相关联。它不依赖
distanceFilter
属性中用于生成事件的值。通过调用startUpdatingLocation启动标准位置服务 方法。此服务最适合需要的应用程序 对位置事件的传递进行更精细的控制。 具体来说,它考虑了desiredAccuracy中的值 和distanceFilter属性,用于确定何时传递新事件。 需要标准位置服务的精确度 导航应用程序或任何高精度的应用程序 需要位置数据或定期更新流。然而, 这些服务通常需要位置跟踪硬件 启用更长的时间,这可以导致更高的功率 的使用。
这就是为什么distanceFilter
仅与标准位置服务一起使用,并且在监控重要位置变化时不使用的原因,例如。 desiredAccuracy
或heading
信息。
这是因为通常知道一个人移动了x米并不是真的有用。但是,知道一个人在y方向上移动了x米并且z精确度非常有价值。
答案 1 :(得分:0)
标准位置更改:使用常规GPS模块。电池密集。如果locationManager
是CLLocationManager
类的实例,请按以下步骤启动服务
[locationManager startUpdatingLocation];
重要的位置变化:每当无线电塔发生变化时。更适合电池。苹果公司并没有在官方文件中说明无线电塔的变化,但显然这就是苹果新功能问世时的说法。
[locationManager startMonitoringSignificantLocationChanges];
如果您订阅了重要的位置更改,则distanceFilter
会忽略该属性CLLocationManager
。