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”没有找到任何信标?

使用 onConnected() 显示最后一个已知位置

getLastKnownLocation() Android,最后一个已知位置何时更新?

从最后一个已知邮件 ID 获取最新消息 - Mailcore

在设备位置关闭时从 Google Play 服务获取最后一个已知位置

SQL - 重复最后一个已知值,直到昨天