CLLocationManager 最后一个已知位置
Posted
技术标签:
【中文标题】CLLocationManager 最后一个已知位置【英文标题】:CLLocationManager last known location 【发布时间】:2014-03-26 23:45:11 【问题描述】:要获得最后知道的地理位置,我有:
CLLocationManager * locationManager = [[CLLocationManager alloc] init];
CLLocation * lastKnownLocation = [locationManager location];
lastKnownLocation 是否反映了我的应用被回调的最后位置,还是反映了全局 ios 系统级别的最后位置(其他应用或 iOS 可能查询过的位置)?
我这样做而不是主动查询用户的位置,这样我就不会浪费用户的电池。
如果用户没有授予访问位置的权限,显然 lastKnownLocation 应该为零。我的问题专门针对用户授予我的应用访问位置权限的情况。
【问题讨论】:
【参考方案1】:通常,您不应简单地依赖从location
返回的现有值(如果有),除非您检查其准确性和时间戳(与您的要求相比)。最好从startUpdatingLocation
开始,直到找到符合您的准确度要求的位置,然后stopUpdatingLocation
或切换到stopMonitoringSignificantLocationChanges
(如果有)。
location
返回的位置非常依赖于历史记录,所以你不能肯定地说它会是这样或那样的。您始终需要根据您的目的验证准确性。
【讨论】:
看看用户在哪个城市怎么样?我只需要精确到 100 公里的位置数据。假设用户在不同的应用程序中至少打开了一次位置管理器,这意味着我在这里得到了足够的结果,对吗?我真的很想念来自 android 的 getLastKnownLocation()。 link.【参考方案2】:我知道这是一个老问题,但为了完整起见,也许其他人会在这里结束:
CLLocationManager
类具有返回的location
属性(根据官方Apple docs):
最近检索到的用户位置。
当不知道位置时,此方法将返回nil
。
【讨论】:
以上是关于CLLocationManager 最后一个已知位置的主要内容,如果未能解决你的问题,请参考以下文章
CLLocationManager 的委托函数“didRangeBeacon”没有找到任何信标?
getLastKnownLocation() Android,最后一个已知位置何时更新?
从最后一个已知邮件 ID 获取最新消息 - Mailcore