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 仅返回英文地址