MKMapView e setregion: animato: non aggiornamento della mappa grafica

voti
4

Saluti! Sto tentando di utilizzare MKMapView senza esempi di codice di Apple, anche se ci sono un paio di altri là fuori di varia chiarezza. (Lo so, Leggere il manuale amichevole. Ho fatto questo, ma non è chiaro al 100%, quindi per favore portare con me su questo.)

Ecco la situazione. Ho una MKMapView oggetto, in cui ho aggiunto un insieme di circa dieci MKPinAnnotation oggetti. Fin qui tutto bene. Tutto è alloced / rilasciato in modo sano e non sembra essere alcuna lamentela da parte Instruments.

Su visualizzazione iniziale, ho creato un MKCoordinateRegion oggetto con il punto centrale alla nostra prima posizione perno, e un (arbitraria) nell'arco di 0,2 x 0,2. Ho poi chiamo:

[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];

Wow! Che ha funzionato bene.

Intanto ... Ho anche un controllo segmentata per consentire il movimento di ciascuna posizione del perno. Quindi, come si tocca l'elenco, la mappa anima ad ogni nuova posizione pin con un nuovo paio di chiamate a setregion: animato: e regionThatFits: ... o almeno questa è l'idea.

Mentre la mappa fa viaggio nella nuova posizione perno, la mappa stessa non aggiorna sotto. Invece, vedo il mio pin su un grigio / bianco-sfondo mappa ... fino a quando ho NUDGE la mappa in qualsiasi direzione, tuttavia un po '. Poi la mappa mostra attraverso! (Se sto muovendo solo a breve distanza del luogo perno precedente, io di solito a vedere qualsiasi parte della mappa è stato già caricato.)

Ho il sospetto che sto facendo qualcosa di stupido qui, ma non sono stato in grado di capire cosa, almeno non dalla documentazione MapKit. Forse sto utilizzando le chiamate sbagliate? (Beh, ho bisogno di impostare la regione, almeno una volta, sì che circa Muoversi non sembra aiutare però?). Ho anche provato con setCenterCoordinate: animato: - lo stesso problema.

Sto assumendo nulla a questo punto (no pun intended). Sto solo cercando di trovare la mia strada.

Indizi benvenuto / apprezzato!

UPDATE: Chiamare setregion: animato: e regionThatFits: la prima volta, seguito da setCenterCoordinate: animato: durante l'attraversamento della lista, non ha alcun effetto. Scoperta interessante però: se cambio animato da NO in entrambi i casi, gli aggiornamenti delle mappe !!! Solo quando è impostata su YES. (Wha succedere ?! è animata:? Rotto Che non può essere ... ???)

È pubblicato 08/07/2009 alle 01:14
fonte dall'utente
In altre lingue...                            


4 risposte

voti
6

Si scopre che l'aggiornamento delle mappe non funziona quando si utilizza il simulatore. Quando provo setCenterCoordinate: animato: sul dispositivo, io faccio ottenere l'aggiornamento mappa sotto.

Linea di fondo: mi confidava il simulatore per abbinare il dispositivo in termini di comportamento aggiornamento delle mappe. Ahimè, mi sono sbagliato! Lezione appresa. "Non lasciate che questo accada a te." :)

Risposto il 28/07/2009 a 13:14
fonte dall'utente

voti
2

È necessario invocare la setRegion:animated:chiamata nel contesto del thread principale. Basta fare qualcosa di simile:

....
[self performSelectorOnMainThread:@selector(updateMyMap) withObject:nil waitUntilDone:NO];

}

-(void) updateMyMap {
    [myMap setRegion:myRegion animated:YES];    
}

e dovrebbe funzionare in ogni caso (animato o no), con la mappa aggiornata sotto.

Risposto il 27/07/2009 a 13:11
fonte dall'utente

voti
0

Anche se questo è un vecchio argomento ho pensato di suonare con la mia esperienza. Sembra che la mappa di animazione non solo su dispositivi che eseguono iOS 3.1.x e la 3.1.x. simulatore di corsa Il mio dev iPod touch con 3.1.3 non riesce a diminuire se l'animazione è attiva.

Risposto il 07/10/2010 a 15:40
fonte dall'utente

voti
0

Hum strano. Gli aggiornamenti delle mappe sul mio Mac, anche nel simulatore. Forse un impostazione di rete (proxy o qualsiasi altra cosa) che possono impedire il widget di mappa per scaricare le piastrelle sul simulatore?

Risposto il 31/07/2009 a 09:17
fonte dall'utente

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