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

Posted

技术标签:

【中文标题】CLLocation 列表中的地点/城市名称【英文标题】:Place/City names from a list of CLLocation 【发布时间】:2016-10-21 18:14:48 【问题描述】:

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

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

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

(如果我们有多个相同lat,long我们只调用一次api)

【问题讨论】:

部分相关 - 坐标列表从何而来?确保缓存结果以避免对过去获得的结果进行网络调用。 @rmaddy 是的,如果我们有多个具有相同纬度的项目,那么我们只调用一次 api。该列表来自照片库。 (我们将详细信息保存在数据库中并使用这些项目) 【参考方案1】:

此代码声明了一组位置并逐个查找它们,请求之间至少间隔 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
    

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

【讨论】:

以上是关于CLLocation 列表中的地点/城市名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 Core Location 时,CLBeacon (iBeacon) 和 CLLocation (Coordinates) 之间应该如何选择?

如何在iphone中获取地理位置城市名称?

百度定位+精确定位+模糊城市定位

位置 API。获取城市的区域

通过微博API怎么获取用户发微博的实际地点

世博会地点中的城市位置反应原生