CLLocationManager更新频率

问题描述:

我已经配置locationManager如下。CLLocationManager更新频率

_locationManager = [[CLLocationManager alloc] init]; 
[_locationManager setDelegate:self]; 
[_locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters]; 
[_locationManager setDistanceFilter:kCLDistanceFilterNone]; 

当应用程序运行时,我从委托方法中得到一些更新。 当我没有改变位置,手机静止2小时左右时,我会在前10分钟内收到10-12次更新,然后停止接收更新。

我的理解是,desired准确是多久设备将继续尝试更多和更准确的方法来获取当前位置。所以在我的情况下,大约需要10分钟才能获得所需的精度。

我想确认这是否属实。即使设备没有移动,我是否也有办法定期更新位置信息?

为什么你会期望如果它没有改变的位置更新?

如果要定期刷新结果,请使用自己创建的NSTimer


当设备获得一个位置错误< desiredAccuracy的利润,它就会停止要求更精确的结果。如果设备移动,它会再次开始询问,直到它再次获得所需的精度。

如果你指定10米的准确性,那么你几乎肯定会依赖于GPS - 手机塔和wifi并不是那么准确(通常)。

要确定设备是否已移动,它使用距离过滤器 - 通过将其设置为无,您一直要求它始终精确到最接近的10米 - 这可能会在电池上相当耗尽;)

+0

我正在开发一个应用程序,在每小时之后,通知用户其当前位置。如果设备正在移动,这工作正常。但并非如此。我不能使用NSTimer,因为应用程序并不总是处于前台。 – Sahil 2012-01-10 13:41:37

+0

也许背景位置更新和本地通知可以以某种方式组合? – deanWombourne 2012-01-10 13:43:09

+1

并看看这个问题的接受答案:http://*.com/questions/6347503/how-do-i-get-a-background-location-update-every-n-minutes-in-my -ios-application - 看起来像他找到了一个做计时器的方法吗? – deanWombourne 2012-01-10 13:45:05