有没有办法从iOS中的CLLocation获取街道名称?

有没有办法从iOS中的CLLocation获取街道名称?,ios,Ios,在我的应用程序中,我需要知道用户所在街道的名称。目前我只知道hot可以通过cllocationmanager对象获取用户位置,并在MKMapView中显示,但我找不到任何方法获取用户所在街道的名称 有没有办法在使用或不使用iOS sdk的情况下执行此操作?从iOS 5及以后,您可以使用CLGeocoder执行此操作。我强烈建议您阅读《位置感知编程指南》 为了获得街道信息,您应该使用reverseGeocodeLocation:completionHandler:发出请求。在该完成处理程序中,您将

在我的应用程序中,我需要知道用户所在街道的名称。目前我只知道hot可以通过
cllocationmanager
对象获取用户位置,并在
MKMapView
中显示,但我找不到任何方法获取用户所在街道的名称


有没有办法在使用或不使用iOS sdk的情况下执行此操作?

从iOS 5及以后,您可以使用
CLGeocoder
执行此操作。我强烈建议您阅读《位置感知编程指南》

为了获得街道信息,您应该使用
reverseGeocodeLocation:completionHandler:
发出请求。在该完成处理程序中,您将收到一个
CLPlacemark
对象数组。要获取街道,只需使用
KabPersonalAddressStreetKey
键从CLPlacemark对象中的
addressDictionary
字典中提取对象。

简单扩展:

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)")
}

谢谢!非常有用!