【发布时间】:2015-12-22 15:25:13
【问题描述】:
我正在使用 Xcode 7 和 iOS9。我想根据从用户当前位置到列表中所有其他位置的距离对列表进行升序排序。
我不想按坐标计算到某个位置的距离,而是按地址计算,因为距离取决于选择的方法(驾车/步行)。我要做的就是将地址保存在每个位置对象中,以便稍后计算到该对象的距离。
使用对象初始化列表时,我在每个对象的初始化程序中执行此请求:
let location = CLLocation(latitude: latitude, longitude: longitude) //changed!!!
CLGeocoder().reverseGeocodeLocation(location, completionHandler: {(placemarks, error) -> Void in
//the code to obtain an address and save it in a location object is here and works
}
我现在遇到的问题是我必须发送 172 个这样的 reverseGeocodeLocation 请求,因为我的列表包含 172 个对象,我需要计算从我的用户位置到每个对象位置的距离。
如此快速地发送如此多的请求会导致此错误: 操作无法完成。 (kCLErrorDomain 错误 2。)
有没有办法解决这个问题? 如果事情不清楚,请告诉我,以便我澄清
【问题讨论】:
-
我不认为这真的是 reverseGeocodeLocation 的预期用途,因此如果不隔开您的请求以满足 API 限制,我怀疑会有一个好的解决方案。您是否考虑过使用具有不同 API 限制或允许您一次发送多个位置的不同地理位置服务
-
升序排序意味着您要列出附近的那些地方??
-
@anishparajuli 是的
-
使用 google places API 或foursquare API 然后... ??
-
@anishparajuli 是的 google api 工作正常,谢谢
标签: ios swift ios9 cllocation reversegeocodelocation