La variabile pin è corretta. Ora devi solo aggiungere questa annotazione a MKMapView
.
È anche possibile creare una classe personalizzata per MKAnnotation
per aggiungere annotazioni personalizzate alla visualizzazione mappa.
un beta demo per MapExampleiOS8 => che supporta Swift 2,1
Seguire i passaggi di seguito:
1. Aggiungere MapKit.framework
al progetto.
2. Creare Storyboard variabile IBOutlet
della mappa di controllo visualizzazione o crearlo nel controller della vista. Impostare delegato per questa variabile per scavalcarlo di metodi delegato:
Aggiungi firma del delegato per visualizzare l'interfaccia di controllo:
class ViewController: UIViewController, MKMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Set map view delegate with controller
self.mapView.delegate = self
}
}
3. Override suoi metodi delegato:
Qui abbiamo bisogno di ignorare mapView(_:viewForAnnotation:)
metodo per mostrare i pin di annotazione sulla mappa.
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
if (annotation is MKUserLocation) {
return nil
}
if (annotation.isKind(of: CustomAnnotation.self)) {
let customAnnotation = annotation as? CustomAnnotation
mapView.translatesAutoresizingMaskIntoConstraints = false
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotation") as MKAnnotationView!
if (annotationView == nil) {
annotationView = customAnnotation?.annotationView()
} else {
annotationView?.annotation = annotation;
}
self.addBounceAnimationToView(annotationView)
return annotationView
} else {
return nil
}
}
4. Aggiungere MKPointAnnotation
alla cartina.
È possibile aggiungere un perno alla posizione nella visualizzazione mappa. Per semplicità aggiungi il codice al metodo viewDidLoad()
.
override func viewDidLoad() {
super.viewDidLoad()
// Set map view delegate with controller
self.mapView.delegate = self
let newYorkLocation = CLLocationCoordinate2DMake(40.730872, -74.003066)
// Drop a pin
let dropPin = MKPointAnnotation()
dropPin.coordinate = newYorkLocation
dropPin.title = "New York City"
mapView.addAnnotation(dropPin)
}
Sì, funziona! Facile e breve – Mehmet