CLLocationManager最后一个已知位置

mob*_*com 9 geolocation ios

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

CLLocationManager * locationManager = [[CLLocationManager alloc] init];
CLLocation * lastKnownLocation = [locationManager location];
Run Code Online (Sandbox Code Playgroud)

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

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

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

Wai*_*ain 5

通常,您不应简单地依赖从返回的现有(如果有)值,location除非您检查其准确性和时间戳(与您的要求相比)。最好先开始,startUpdatingLocation直到获得与您的精度要求相符的位置,然后再stopUpdatingLocation切换到stopMonitoringSignificantLocationChanges(如果可用)。

从返回的位置location非常依赖于历史,所以你不能肯定地说它会是这样或那样。为了您的目的,您始终需要验证准确性。

  • 仅仅找出用户在哪个城市怎么样?我只需要精确到 100 公里的位置数据。假设用户在不同的应用程序中至少打开了一次位置管理器,那将意味着我在这里得到了足够的结果,对吧?我真的很想念 android 的 getLastKnownLocation()。[链接](http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String))。 (4认同)