在我的应用程序中,我需要知道用户所在街道的名称。目前我只知道获取用户位置和CLLocationManger
对象并将其显示在 aMKMapView
但我找不到任何方法来获取用户所在街道的名称。
有没有办法在有或没有 iOS sdk 的情况下做到这一点?
在我的应用程序中,我需要知道用户所在街道的名称。目前我只知道获取用户位置和CLLocationManger
对象并将其显示在 aMKMapView
但我找不到任何方法来获取用户所在街道的名称。
有没有办法在有或没有 iOS sdk 的情况下做到这一点?
从 iOS 5 及更高版本开始,您可以使用CLGeocoder
. 我强烈建议您在此处查看位置感知编程指南。
为了获得街道,您应该使用reverseGeocodeLocation:completionHandler:
. 在该完成处理程序中,您将收到一个对象数组CLPlacemark
。要获取街道,只需使用键从addressDictionary
CLPlacemark 对象中的字典中提取对象。kABPersonAddressStreetKey
简单扩展:
import CoreLocation
typealias StreetNameHandler = (String?) -> Void
extension CLLocation {
func streetNameWithCompletionBlock(completionBlock: StreetNameHandler) {
CLGeocoder().reverseGeocodeLocation(self) { placemarks, error in
if let addressDictionary = placemarks?.first?.addressDictionary, street = addressDictionary["Street"] as? String {
completionBlock(street)
}
}
}
}
简单用法:
location.streetNameWithCompletionBlock { street in
print("street \(street)")
}