- iOS
- 2017-05-15 - 更新:2018-02-15
緯度経度の座標から逆ジオコーディング(リバースジオコーディング)で住所を取得することができます。
これには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