ios - annotation - Swift, Cómo obtener información de una anotación personalizada al hacer clic



mapkit swift 4 (1)

Puedes obtener tu Anotación dentro de didSelectAnnotationView, que luego te dará MKAnnotationView. Este MKAnnotationView tiene MKAnnotation como un objeto.

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
    println("Annotation selected")

    if let annotation = view.annotation as? LocationMapAnnotation {
        println("Your annotation title: \(annotation.title)");
    }
}

https://code.i-harness.com

Tengo la siguiente clase de anotación personalizada:

import UIKit
import MapKit

class LocationMapAnnotation: NSObject, MKAnnotation {
    var title: String?
    var coordinate: CLLocationCoordinate2D
    var location: Location

    init(title: String, coordinate: CLLocationCoordinate2D, location: Location) {
        self.title = title
        self.coordinate = coordinate
        self.location = location
    }
}

Estoy cargando las anotaciones en una vista de mapa como esta:

for i in 0..<allLocations.count{
            //Add an annotation
            let l: Location = self.allLocations[i] as! Location
            let coordinates = CLLocationCoordinate2DMake(l.latitude as Double, l.longitude as Double)
            let annotation = LocationAnnotation(title: l.name, coordinate: coordinates, location: l)
            mapView.addAnnotation(annotation)
        }

Y quiero obtener el objeto de Location de la anotación seleccionada. Actualmente tengo este método que se llama cada vez que toco una anotación, pero no estoy seguro de cómo recuperar el objeto específico de la anotación.

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
    print("Annotation selected")

    //performSegueWithIdentifier("locationInfoSegue", sender: self)
}

Gracias.





mkannotationview