2

在我的应用程序中,我需要知道用户所在街道的名称。目前我只知道获取用户位置和CLLocationManger对象并将其显示在 aMKMapView但我找不到任何方法来获取用户所在街道的名称。

有没有办法在有或没有 iOS sdk 的情况下做到这一点?

4

2 回答 2

3

从 iOS 5 及更高版本开始,您可以使用CLGeocoder. 我强烈建议您在此处查看位置感知编程指南。

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

于 2012-11-24T18:22:47.137 回答
0

简单扩展:

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)")
}
于 2016-07-14T14:15:45.230 回答