【Swift】MKMapViewでピンがタップされたのを検知する方法

こんにちは、のっくんです。

今日はiPhoneアプリを開発している時に地図上のピンがタップされたのを見つけるための方法をご紹介します。

言語はSwiftです。

MKMapViewDelegateを使って、ピンがタップされるのを通知します。

class MapVC: UIViewController, UITextFieldDelegate, MKMapViewDelegate{
        @IBOutlet weak var dispMap: MKMapView!

大事なのは`MKMapView`のdelegateを指定するのを忘れないこと。

これを忘れるとピンをタップしても反応しない。

override func viewDidLoad() {
        super.viewDidLoad()        
        dispMap.delegate = self
}

これでピンのタップイベントを検知できるようになったので、以下のメソッドで処理内容を書く。

    func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
        if let annotation = view.annotation{
            print(annotation.title!!)
        }
    }

このメソッドの中で得られるのは、`MKAnnotationView`というViewだがそのプロパティにMKAnnotationが含まれているので、タップされたピンのタイトルや緯度経度が取得できる。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog