2014-12-07 17 views
15

Sono nuovo nella lingua swift e non ho ancora fatto un'applicazione con mapkit. Ma ho impostato la mappa e le regioni, ma sono bloccato su come consentire agli utenti di aggiungere pin. Mi permetta di chiarire, non ho idea nemmeno di dove cominciare, Tutto quello che ho al momento (per i pin) è la mia variabile, ma non sono nemmeno sicuro se è corretto. Qualsiasi aiuto sarebbe molto apprezzato!! Cosa ho ...Come aggiungere pin (annotazioni) con Xcode 6 (Swift)

var MyPins: MKPinAnnotatoinView!

......

override func viewDidLoad() { 
    super.viewDidLoad() 

codice MapView

..... ..... }

risposta

0

Avrete bisogno di chiamare un metodo per quando e dove l'utente deve aggiungere il pin. Se vuoi aggiungere un segnaposto dove l'utente tocca e tiene in mano la mappa, dovrai chiamare un gestureRecognizer, ma se vuoi farlo tramite un pulsante lo chiamerai ovviamente in un'azione. In entrambi i casi, la documentazione per l'aggiunta di pin viene discussa in modo completo Here

38

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.

enter image description here

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) 
} 
+1

Sì, funziona! Facile e breve – Mehmet

Problemi correlati