Swift CLLocation 地标在使用纬度和经度坐标时返回错误

问题描述 投票:0回答:1

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

我不明白的是为什么有时有效有时无效。

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“(空)”

ios swift core-location cllocation
1个回答
0
投票

您可能连续请求太多次了。

reverseGeocodeLocation(_:completionHandler:)


来自文档:

发起反向地理编码请求后,不要尝试发起另一个反向或正向地理编码请求。地理编码请求对每个应用程序都有速率限制,因此在短时间内发出过多请求可能会导致部分请求失败。当超过最大速率时,地理编码器会将值为

CLError.Code.network
的错误对象传递给您的完成处理程序。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.