Place/City 个来自 CLLocation 列表的名称
Place/City names from a list of CLLocation
这是我的情况。 (使用 Swift 2.2)
我有一个坐标列表 (CLLocation
)。我需要调用 reverseGeocodeLocation
来获取相应的 Place/City。如果我尝试遍历这些元素,某些调用可能会失败,因为 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
}
仅供参考,我使用了计时器的块语法,但这只适用于 iOS 10。如果您使用的是 iOS 9 或更早版本,只需使用选择器版本,它的工作方式相同.
这是我的情况。 (使用 Swift 2.2)
我有一个坐标列表 (CLLocation
)。我需要调用 reverseGeocodeLocation
来获取相应的 Place/City。如果我尝试遍历这些元素,某些调用可能会失败,因为 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
}
仅供参考,我使用了计时器的块语法,但这只适用于 iOS 10。如果您使用的是 iOS 9 或更早版本,只需使用选择器版本,它的工作方式相同.