座標から住所に変換する 逆ジオコーディング
- iOS
-
2017-05-15 - 更新:2018-02-15
この記事は最終更新日から1年以上経過しています。
緯度経度の座標から逆ジオコーディング(リバースジオコーディング)で住所を取得することができます。
これにはGoogleのAPIを利用しますので、GoogleMapsをインポートしている前提でのお話です。
座標をGoogleMapから取得します。
例えばタップであればcoordinate: CLLocationCoordinate2Dが取得できますので
これを元にCLLocationオブジェクトを作成します。
let location: CLLocation = CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude)
逆ジオコーディングを行うメソッド
結果をアラートで表示しています。
func ReverseGeocoder(location: CLLocation) {
var address: String = ""
CLGeocoder().reverseGeocodeLocation(location, completionHandler: {(placemarks, error)->Void in
if error != nil {
print("error")
return
}
if placemarks!.count > 0 {
let pms = placemarks![0]
address = self.makeAddressString(placemark: pms)
let aTitle = "住所表示"
let aMessage = address
let alert = UIAlertController(title: aTitle, message: aMessage, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: false, completion: nil)
} else {
print("error")
}
})
}
取得できた住所を一連の文字列に変換するメソッド
func makeAddressString(placemark: CLPlacemark) -> String {
var address: String = ""
//address += placemark.postalCode != nil ? placemark.postalCode! : ""
address += placemark.administrativeArea != nil ? placemark.administrativeArea! : ""
address += placemark.subAdministrativeArea != nil ? placemark.subAdministrativeArea! : ""
address += placemark.locality != nil ? placemark.locality! : ""
address += placemark.subLocality != nil ? placemark.subLocality! : ""
address += placemark.thoroughfare != nil ? placemark.thoroughfare! : ""
address += placemark.subThoroughfare != nil ? placemark.subThoroughfare! : ""
return address
}
Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12
この記事がお役に立ちましたらシェアお願いします
4,073 views




