web-dev-qa-db-fra.com

Comment ajouter des punaises (annotations) avec Xcode 6 (Swift)

Je suis nouveau dans la langue Swift et je n’ai pas encore fait d’application avec mapkit. Mais la carte et les régions sont définies, mais je ne comprends pas comment autoriser les utilisateurs à ajouter des épingles. Laissez-moi préciser, je ne sais même pas par où commencer, tout ce que j'ai pour le moment (pour les repères) est ma variable, mais je ne suis même pas sûr que ce soit correct. Toute aide serait la bienvenue !! Ce que j’ai ...

var MyPins: MKPinAnnotatoinView!

......

override func viewDidLoad() {
    super.viewDidLoad()

Code de visualisation

..........}

16
Trts

Votre variable pin est correcte. Il ne vous reste plus qu'à ajouter cette annotation à MKMapView

Vous pouvez également créer une classe personnalisée pour MKAnnotation afin d'ajouter une annotation personnalisée à la vue cartographique.

Une démo bêta de MapExampleiOS8 => qui supporte Swift 2.1

Suivez les étapes ci-dessous:

1. Ajoutez MapKit.framework au projet.

enter image description here

2. Créez la variable Storyboard IBOutlet du contrôle de vue cartographique ou créez-la dans le contrôleur de vue. Définissez délégué pour que cette variable remplace ses méthodes de délégation:

Ajouter une signature de délégué pour afficher l'interface du contrôleur:

class ViewController: UIViewController, MKMapViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set map view delegate with controller
        self.mapView.delegate = self
    }
}

3. Remplacer ses méthodes déléguées:

Ici, nous devons redéfinir la méthode mapView(_:viewForAnnotation:) pour afficher les repères d’annotation sur la carte.

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. Ajoutez MKPointAnnotation à la vue cartographique.

Vous pouvez ajouter une épingle à un emplacement dans la vue cartographique. Pour plus de simplicité, ajoutez du code à la méthode 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)
}
38
Kampai

Vous aurez besoin d'appeler une méthode pour savoir quand et où l'utilisateur doit ajouter l'épingle. Si vous souhaitez ajouter une épingle lorsque l'utilisateur appuie de manière prolongée sur la carte, vous devrez appeler un gestureRecognizer, mais si vous souhaitez le faire via un bouton, vous n'appellerez évidemment cela que dans une action. Quoi qu’il en soit, la documentation relative à l’ajout de broches fait l’objet de discussions approfondies Ici

0
Nicholas