CLLocationManager最后一个已知位置

时间:2014-03-26 23:45:12

标签: ios geolocation

为了得到最后知道的地理位置,我有:

CLLocationManager * locationManager = [[CLLocationManager alloc] init];
CLLocation * lastKnownLocation = [locationManager location];

lastKnownLocation是否反映了我的应用程序回调的最后位置,或者它是否反映了全球iOS系统级别的最后位置(其他应用程序或iOS可能查询过的位置)?

我这样做而不是主动询问用户的位置,所以我不会浪费用户的电池。

如果用户未授予访问位置的权限,则显然lastKnownLocation应为nil。我的问题专门针对用户已授予我的应用访问位置权限的情况。

2 个答案:

答案 0 :(得分:3)

通常,您不应该只依赖location返回的现有(如果有)值,除非您检查其准确性和时间戳(与您的要求相比)。最好先启动startUpdatingLocation,直到找到符合您的准确度要求的位置,然后stopUpdatingLocation或切换到stopMonitoringSignificantLocationChanges(如果可用)。

location返回的位置非常依赖于历史记录,因此您无法明确表达其中的某种方式。您始终需要验证准确性。

答案 1 :(得分:0)

我知道这是一个老问题,但是为了完整起见,也许其他人会在这里结束:

CLLocationManager类具有location属性,该属性返回(根据官方Apple docs):

  

最近检索到的用户位置。

在未知位置时,此方法将返回nil