Swift CLLocation placemark在使用lat和long坐标时返回错误

vof42yt1  于 2023-05-05  发布在  Swift
关注(0)|答案(1)|浏览(111)

我的问题是这段代码。有时它根据坐标检索值,有时它挂起并返回下面的错误输出。不管它有坐标每次和一个有效的用户请求使用位置管理器。
我不明白的是为什么有时它有效,有时却无效。

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 ?? ""

输出:

错误:错误域= kCLErrr域代码=2“(null)”

bmp9r5qi

bmp9r5qi1#

您可能连续多次请求该命令。
reverseGeocodeLocation(_:completionHandler:)
从文档:

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

相关问题