【Swift5】MapKitで、ジオコーディング・逆ジオコーディング

MapKitで、ジオコーディング・逆ジオコーディング

ジオコーディング・逆ジオコーディング

ジオコーディングとは住所を軽度緯度に変換することであり、
逆ジオコーディングとはその逆である、経度緯度を住所へ変換することです。

名前だけ、”ジオコーディング”とイッチョマエに名付けているだけで、
ユーザーとしてよく利用する技術です。

逆ジオコーディングのサンプルコード

Mapをタップすると、その住所や郵便番号を取得するミニアプリです。
Githubにも掲載していますので、参考にご活用下さい。
>>https://github.com/MaedaKouta/MiniApp19-Map

import UIKit
import MapKit

class ViewController: UIViewController {

    var addressString = ""
    @IBOutlet weak var addressTextLabel: UILabel!
    @IBOutlet weak var mapView: MKMapView!

    @IBAction func tappedGesture(_ sender: UITapGestureRecognizer) {
        if sender.state == .ended {
            let location = mapView.convert(sender.location(in: view), toCoordinateFrom: mapView)
            convert(lat: location.latitude, log: location.longitude)
        }
    }

    func convert(lat: CLLocationDegrees, log: CLLocationDegrees){
        let geocorder = CLGeocoder()
        let location = CLLocation(latitude: lat, longitude: log)

        geocorder.reverseGeocodeLocation(location) { (placeMarks, error) in
            if let placeMark = placeMarks?.first {
                self.addressString = """
                郵便番号:\(placeMark.postalCode ?? "検出不可")
                名前:\(placeMark.name ?? "検出不可")
                都道府県:\(placeMark.administrativeArea ?? "検出不可")
                市区町村:\(placeMark.locality ?? "検出不可")
            """
                self.addressTextLabel.text = self.addressString
            }
        }
    }

}

ということで本記事は、逆ジオコーディングをご紹介しました。
本記事を書いている僕自身は、まだSwift初学者のためコードに至らない点が多いと思います。参考程度にご活用下さい。
アドバイスやコードの改善などあれば本記事の最後の部分からコメントしてくださいね。
最後まで読んでいただきありがとうございました!

おすすめSwift書籍

Swiftを学ぶなら、間違いのない2冊はこちら

Xcodeを学ぶなら下の一冊



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です