distanceFilter属性使用

时间:2012-06-11 04:52:00

标签: objective-c ios cocoa cllocationmanager

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

  

此属性仅与标准位置一起使用   在监控重要的位置变化时不使用服务。

你能解释一下吗?

2 个答案:

答案 0 :(得分:1)

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

来自docs

  

返回当前位置修复后,接收器会生成更新   仅当用户位置发生重大变化时才会发生事件   检测。例如,它可能会在设备生成新事件   变得与不同的细胞塔相关联。它不依赖   distanceFilter属性中用于生成事件的值。

     

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

这就是为什么distanceFilter仅与标准位置服务一起使用,并且在监控重要位置变化时不使用的原因,例如。 desiredAccuracyheading信息。

这是因为通常知道一个人移动了x米并不是真的有用。但是,知道一个人在y方向上移动了x米并且z精确度非常有价值。

答案 1 :(得分:0)

标准位置更改:使用常规GPS模块。电池密集。如果locationManagerCLLocationManager类的实例,请按以下步骤启动服务

[locationManager startUpdatingLocation];

重要的位置变化:每当无线电塔发生变化时。更适合电池。苹果公司并没有在官方文件中说明无线电塔的变化,但显然这就是苹果新功能问世时的说法。

[locationManager startMonitoringSignificantLocationChanges];

如果您订阅了重要的位置更改,则distanceFilter会忽略该属性CLLocationManager