Come aprire chiamata fuori MKAnnotationView di programmazione? (IPhone, MapKit)
-
25-09-2019 - |
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?
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])