为了得到最后知道的地理位置,我有:
CLLocationManager * locationManager = [[CLLocationManager alloc] init];
CLLocation * lastKnownLocation = [locationManager location];
lastKnownLocation是否反映了我的应用程序回调的最后位置,或者它是否反映了全球iOS系统级别的最后位置(其他应用程序或iOS可能查询过的位置)?
我这样做而不是主动询问用户的位置,所以我不会浪费用户的电池。
如果用户未授予访问位置的权限,则显然lastKnownLocation应为nil。我的问题专门针对用户已授予我的应用访问位置权限的情况。
答案 0 :(得分:3)
通常,您不应该只依赖location
返回的现有(如果有)值,除非您检查其准确性和时间戳(与您的要求相比)。最好先启动startUpdatingLocation
,直到找到符合您的准确度要求的位置,然后stopUpdatingLocation
或切换到stopMonitoringSignificantLocationChanges
(如果可用)。
从location
返回的位置非常依赖于历史记录,因此您无法明确表达其中的某种方式。您始终需要验证准确性。
答案 1 :(得分:0)
我知道这是一个老问题,但是为了完整起见,也许其他人会在这里结束:
CLLocationManager
类具有location
属性,该属性返回(根据官方Apple docs):
最近检索到的用户位置。
在未知位置时,此方法将返回nil
。