Domanda

Voglio aprire il richiamo di un MKPinAnnotationView di programmazione. Ad esempio, mi calo 10 pin sulla mappa, e la voglia di aprire quello più vicino a me. Come potrei fare per fare questo?

Apple ha specificato il parametro 'selezionato' per MKAnnotationView's, ma scoraggia l'impostazione direttamente (questo non funziona, provato).

Per il resto MKAnnotationView solo ha una setHighlighted ( stessa storia ), e può ShowCallout metodo ..

Eventuali suggerimenti se questo è possibile a tutti?

È stato utile?

Soluzione

Nel vostro mapViewController creare un metodo di azione:

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

}

Si può quindi determinare l'annotazione più vicino in base alla posizione attuale e camminare per le annotazioni disponibili nella matrice.

[mv annotations];

Una volta che l'annotazione più vicino è calcolato, chiamata:

[self openAnnotation:closestAnnotation];

Il MapView deve scorrere automaticamente di inserire il vostro annotazioni al centro dell'area di visualizzazione.

Altri suggerimenti

In rapida 3 questo viene aggiornato a:

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

e può essere chiamato con qualsiasi annotazione (questo aprirà la vista di dettaglio di annotazione e tentare di centrare l'annotazione sulla mappa)

Ad esempio utilizzando il secondo di annotazione in un ipotetico elenco di annotazioni.

openAnnotation(annotation: mapView.annotations[1])
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top