Comment ouvrir appel à MKAnnotationView programme? (IPhone, MapKit)

voix
26

Je veux ouvrir le encadré pour un MKPinAnnotationViewprogramme. Par exemple , je laisse tomber 10 broches sur la carte, et que vous souhaitez ouvrir le plus proche de moi. Comment dois - je prendre?

Apple a spécifié le paramètre « sélectionné » pour MKAnnotationView's, mais décourage la mise directement (ce qui ne fonctionne pas, il a essayé).

Pour le reste MKAnnotationViewn'a qu'une setHighlighted ( même histoire ), et peut ShowCalloutméthode ..

Tous les conseils si cela est possible?

Créé 03/02/2010 à 18:16
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
77

Dans votre mapViewController créer une méthode d'action:

- (void)openAnnotation:(id)annotation 
{
    //mv is the mapView
    [mv selectAnnotation:annotation animated:YES];

}

Vous pouvez ensuite déterminer l'annotation la plus proche en fonction de l'emplacement actuel et la marche des annotations disponibles dans le tableau.

[mv annotations];

Une fois l'annotation la plus proche est calculé, appelez:

[self openAnnotation:closestAnnotation];

Le Mapview doit défiler automatiquement placer l'annotation dans le centre de la zone d'affichage.

Créé 26/02/2010 à 05:45
source utilisateur

voix
1

Dans ce rapide 3 est mis à jour:

func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}

et peut être appelé en utilisant une annotation (cela ouvrira l'annotation vue et tenter de callout centrer l'annotation sur la carte)

Par exemple en utilisant la deuxième annotation dans une liste hypothétique des annotations.

openAnnotation(annotation: mapView.annotations[1])
Créé 23/05/2017 à 16:14
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more