ios - CLLocation 列表中的地点/城市名称

标签 ios swift cllocation reverse-geocoding

这是我的情况。 (使用 Swift 2.2)

我有一个坐标列表 (CLLocation)。我需要调用 reverseGeocodeLocation 来获取相应的地点/城市。如果我尝试遍历这些元素,某些调用可能会失败,因为 Apple 建议在一秒钟内发送一个调用。所以我还需要在每次调用之间添加延迟。

有什么办法可以实现吗?任何帮助表示赞赏。

(如果我们有多个具有相同纬度的项目,我们只调用一次 api)

最佳答案

此代码声明一组位置并逐个查找,请求之间至少间隔 1 秒:

    var locations = Set<CLLocation>()

    func reverseGeocodeLocation() {
        guard let location = locations.popFirst() else {
            geocodingDone()
            return
        }
        CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in
            //Do stuff here
            //Dispatch the next request in 1 second
            _ = Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
                self.reverseGeocodeLocation()
            }
        }
    }

    func geocodingDone() {
        //Put your finish logic in here
    }

仅供引用,我对计时器使用了 block 语法,但这只适用于 iOS 10。如果您使用的是 iOS 9 或更早版本,只需使用选择器版本,它的工作方式相同。

关于ios - CLLocation 列表中的地点/城市名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183048/

相关文章:

json - 无法从 json 数据中提取值

ios - 无法让 xcode Storyboard 模式按钮更改屏幕

objective-c - horizo​​ntalAccuracy 究竟是什么意思?

ios - 像 The Magazine 那样滑动 UIViews

ios - 无法将 UITableViewController 连接到在 xib 中创建的 UITableView

swift - Firestore addSnapshotListener 在新对象进入时替换对象数据

json - 将 NSNumber 转换为 Double(CLLocationDegrees)

ios - 考虑缩放级别的两点之间的 CLLocationCoordinate2D 距离

ios - 从 Web 链接下载应用程序

iOS订阅试用模式