我的问题是这段代码。有时它会根据坐标检索值,有时会挂起并返回下面的错误输出。不管它每次都有坐标和有效的用户请求使用位置管理器。
我不明白的是为什么有时有效有时无效。
guard let placemark = placemark else {
print("Error:", error ?? "nil")
return
}
代码:
let long = locationManager.location?.coordinate.longitude
let lat = locationManager.location?.coordinate.latitude
var userLocation = ""
let location = CLLocation(latitude: lat ?? 0.0, longitude: long ?? 0.0)
location.placemark { placemark, error in
guard let placemark = placemark else {
print("Error:", error ?? "nil")
return
}
print(placemark.postalAddressFormatted ?? "")
let line1 = placemark.streetName ?? ""
let city = placemark.city ?? ""
let state = placemark.state ?? ""
let country = "US"
let postal_code = placemark.zipCode ?? ""
输出:
错误:错误域=kCLErrorDomain 代码=2“(空)”
您可能连续请求太多次了。
reverseGeocodeLocation(_:completionHandler:)
来自文档:
发起反向地理编码请求后,不要尝试发起另一个反向或正向地理编码请求。地理编码请求对每个应用程序都有速率限制,因此在短时间内发出过多请求可能会导致部分请求失败。当超过最大速率时,地理编码器会将值为
的错误对象传递给您的完成处理程序。
CLError.Code.network