2012-06-11 58 views
3

CLLocationManager类的文档,我找了distanceFilter财产这样的解释:distanceFilter财产使用

此属性只用在与标准位置 服务配合和监督显著位置变化时,不使用。

你能解释一下吗?

回答

1

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

docs

返回当前位置的修补程序后,接收器产生更新 事件只有当用户的位置显著的变化是检测 。例如,当设备 变得与不同的蜂窝塔关联时,它可能会生成一个新事件。它不依赖于distanceFilter属性中的值 来生成事件。

通过调用startUpdatingLocation 方法启动标准位置服务。此服务最适合需要更细致地控制位置事件传递的应用程序。 具体来说,它会考虑desiredAccuracy 和distanceFilter属性中的值,以确定何时传递新事件。 导航应用程序或任何需要高精度位置数据或定期更新流的应用程序需要标准位置服务的精度。但是,这些服务通常需要启用位置跟踪硬件 较长的一段时间,这可能会导致更高的电源使用情况 。

这就是为什么distanceFilter只用结合标准定位服务和监控显著位置时,不使用变化了,例如。 desiredAccuracyheading信息。

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

0

标准位置更改:使用常规GPS模块。电池密集。如果locationManager是您CLLocationManager类的实例启动服务如下

[locationManager startUpdatingLocation]; 

显着位置更改:每当无线电发射塔的变化。更好的电池。苹果公司在官方文件中并没有说这是因为无线电塔发生了变化,但显然这是苹果公司在新功能发布时所说的。

[locationManager startMonitoringSignificantLocationChanges]; 

酒店distanceFilterCLLocationManager如果您订阅显著位置的变化忽略不计。