私のアプリでは、ユーザーがいる通りの名前を知る必要があります。現時点では、CLLocationManger
オブジェクトを使用してユーザーの位置を取得し、それを表示するMKMapView
方法しかわかりませんが、取得する方法が見つかりませんユーザーがいる通りの名前。
iOS SDK の有無にかかわらずこれを行う方法はありますか?
私のアプリでは、ユーザーがいる通りの名前を知る必要があります。現時点では、CLLocationManger
オブジェクトを使用してユーザーの位置を取得し、それを表示するMKMapView
方法しかわかりませんが、取得する方法が見つかりませんユーザーがいる通りの名前。
iOS SDK の有無にかかわらずこれを行う方法はありますか?
iOS 5以降では、を使用してこれを行うことができますCLGeocoder
。こちらのLocationAwarenessプログラミングガイドをご覧になることを強くお勧めします。
通りを取得するには、を使用してリクエストを行う必要があります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)")
}