Domanda

Un saluto! Sto tentando di usare 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 abbiate pazienza con me su questo.)

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

Alla visualizzazione iniziale, a impostare una 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.

Nel frattempo ... ho anche un controllo segmentato per consentire il movimento di ogni località pin. 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 significa "viaggio" nella nuova posizione del perno, la mappa stessa non aggiorna sotto. Invece, vedo il mio pin su un grigio / bianco-sfondo mappa ... fino a I 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 ad utilizzare setCenterCoordinate: animato:. - lo stesso problema

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

Gli indizi benvenuto / apprezzato!

UPDATE: Calling setregion: animato: e regionThatFits: per la prima volta, seguito da setCenterCoordinate: animato: durante l'attraversamento della lista, ha nessun 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 ... ???)

È stato utile?

Soluzione

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

Per riassumere: si fidava 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." :)

Altri suggerimenti

È necessario richiamare la chiamata setRegion:animated: 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 di sotto.

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?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top