reverseGeocodeLocation(_ location: CLLocation) 方法是不是在离线模式下工作?

Posted

技术标签:

【中文标题】reverseGeocodeLocation(_ location: CLLocation) 方法是不是在离线模式下工作?【英文标题】:Does reverseGeocodeLocation(_ location: CLLocation) method works in offline mode?reverseGeocodeLocation(_ location: CLLocation) 方法是否在离线模式下工作? 【发布时间】:2022-01-18 17:25:09 【问题描述】:

我从方法reverseGeocodeLocation(_ location: CLLocation) 获得了一个位置名称。我的要求是在离线模式下将 Lat-Long 值存储在 DB 中,我还想存储从上述方法获得的这个位置名称字符串。 这是我已经实现的:

geoCoder.reverseGeocodeLocation(location, completionHandler:  (placemarks, error) in
            
  let place = placemarks?[0]
  var countryName = ""
            
  if let countryString = place?.country 
       countryName = countryString
  

离线模式下绝对可以得到lat-long;我的问题是,上述方法是否也适用于离线模式

【问题讨论】:

【参考方案1】:

正如the documentation 所说(强调):

该方法将指定的位置数据异步提交到地理编码服务器并返回。

由于它是将请求发送到服务器,因此如果离线,您几乎可以肯定无法获得反向地理编码响应。

但是您可以将坐标添加到某个持久存储中,当您重新联机时应该能够对它们进行反向地理编码。但是,如果您这样做,请记住它们是有速率限制的。正如文档继续说的那样:

每个应用的地理编码请求都有速率限制,因此在短时间内发出过多请求可能会导致某些请求失败。当超过最大速率时,地理编码器会将值为 CLError.Code.network 的错误对象传递给您的完成处理程序。

【讨论】:

以上是关于reverseGeocodeLocation(_ location: CLLocation) 方法是不是在离线模式下工作?的主要内容,如果未能解决你的问题,请参考以下文章

CLGeocoder reverseGeocodeLocation 错误 -8

从 reverseGeocodeLocation 获取位置名称

reverseGeocodeLocation 存储为 NSString 产生错误

从 reverseGeocodeLocation 仅返回英文地址

使用 reverseGeocodeLocation 将用户的状态作为 NSString 返回

如何本地化来自 reverseGeocodeLocation 的地址结果?