2009-10-05 23 views
8

Ho un MKMapView che sto considerando di ruotare per visualizzare in modo più pratico una serie di annotazioni ai miei utenti.Esperienza con rotazione MKMapView

A partire da ora ho intenzione di ruotare semplicemente l'intera vista con un CGAffineTransform, ma volevo sapere se qualcuno ha avuto esperienza con la rotazione di MKMapView.

  • Ci sono insidie ​​o "trucchi" che si sono verificati quando si aggiunge la rotazione?
  • C'è un modo più semplice per ruotare una vista mappa?
  • Se ho un overlay, convertCoordinate: toPointToView: il metodo funziona ancora allo stesso modo? Suppongo che dovrei applicare la stessa trasformazione al mio overlay per i punti da allineare, ma forse il metodo è più intelligente di quello.

Se c'è qualcosa che pensi possa dare una mano mi piacerebbe sentire tutto.


Edit: Dopo molti esperimenti credo che sarò con mappe statiche che posso ruotare e sovrapporre me stesso, tuttavia, vorrei ancora essere interessato a tutte le informazioni su di rotazione MKMapView.

risposta

1

ho iniziato a lavorare con le rotazioni MKMapView e hanno trovato che:

  • Quando si applica un CGAffineTransform alla mappa visualizzare il metodo convertCoordinate: toPointToView: funziona lo stesso.
  • Le annotazioni ruotano con la vista, incluso il testo di annotazione.
  • La regione che si adatta ancora sembra adattarsi a una regione sullo schermo, non si adatta alla vista della mappa (ho reso la mia vista della mappa più grande della sua vista genitore in modo che potesse ruotare senza mostrare la vista dietro).
8

Ho anche intenzione di utilizzare MKMapView ruotato nella mia applicazione. Per visualizzare le annotazioni non ruotate, utilizzo il seguente codice:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ 
    ... 
    annotationView.transform = GAffineTransformInvert(mapView.transform); 
    ... 
} 

Sembra funzionare per me.

+0

Grazie per le informazioni, deduco che la trasformazione annotationView influenzi solo la rotazione? Quella posizione è una funzione di qualche altra trasformazione? – jessecurry

6

Ci scusiamo per rianimare un argomento finito, ma un altro "gotcha": se ridimensionate la visualizzazione della mappa per essere abbastanza grande da ruotare in modo che copra sempre l'intero schermo, finirete per ritagliare il logo "Google" da in basso a sinistra. Questo è esplicitamente contrario alla licenza con cui si utilizza MapKit e potrebbe essere motivo di rifiuto dell'app. In pratica, l'aggiunta di una versione statica del logo di Google come UIImageView in cima sembra essere considerata accettabile da tutte le parti.

+1

Buon punto. Puoi effettivamente recuperare il logo "Google" da MKMapView. MKMapView ha 2 sottoview, uno è un UIImageView che contiene il logo. Ho creato il mio UIImageView e ho impostato la sua proprietà dell'immagine come quella di MKMapView e funziona. Il logo di Google appare non ruotato. – Fraggle

Problemi correlati