2010-07-03 12 views
14

Sto provando a creare una sovrapposizione polilinea (MKPolyline) che si aggiorna periodicamente, per simulare il movimento di un oggetto. Posso ottenere questo risultato rimuovendo il vecchio overlay, aggiornando la polilinea e aggiungendo di nuovo l'overlay, ma questo porta a sfarfallio.come aggiornare MKPolyline/MKPolylineView?

Per un'annotazione del punto (MKPointAnnotation) è possibile semplicemente modificare le sue coordinate e la vista verrà aggiornata automaticamente e senza problemi, senza dover rimuovere e aggiungere nuovamente l'annotazione.

Questo è anche possibile in qualche modo per una sovrapposizione?

+0

Ho inviato una piena attuazione [qui] [1] [1]: http://stackoverflow.com/questions/11282271/draw-line-on-mkmapview-with-pattern -image/11344230 # 11344230 – EsbenB

risposta

15

sì, dovresti aggiungere una sovrapposizione aggiuntiva con il set di punti dal tuo ultimo punto al tuo prossimo punto. Una volta creata la MKPolyline con i tuoi punti, non sei in grado di cambiarla quando disegna MKPolylineView senza rimuovere il vecchio e aggiungendo quello appena creato.

è possibile creare una nuova vista polilinea con tutti i punti (incluso quello nuovo) e aggiungerla alla mappa ma non rimuovere quella più vecchia. quindi una volta aggiunto il nuovo, è possibile rimuovere quello più vecchio più corto. Potrebbe non essere bello da implementare ma dovrebbe sbarazzarsi del flashing sugli aggiornamenti. puoi distinguere il vecchio e il nuovo con un tag. forse un punto conta come il tag avrebbe funzionato.

+0

grazie per la tua risposta. L'ho implementato nel modo che suggerisci e funziona molto bene. Come dici tu, non è l'implementazione più carina, ma probabilmente il meglio che posso fare senza scrivere le mie lezioni PolyLine. – adriaan

+0

Grazie per la risposta. Sfortunatamente questo probabilmente non risolve il mio problema, dal momento che il mio overlay è semi-trasparente. Probabilmente dovrei aggiungere la mia vista in cima alla mappa. – huggie

+0

grazie AtomRiot! – james075

1

La classe MKPolyline eredita MKMultiPoint, che consiste in un insieme di punti. Questa è una proprietà di sola lettura, il che significa, sfortunatamente, non è possibile aggiornarlo.

+0

Grazie per la risposta Peter. Ha senso. – adriaan

9

Tutti gli overlay MapKit sono immutabili, quindi per ottenere la mutabilità è necessario creare la sovrapposizione personalizzata e ridisegnare solo la regione che deve essere aggiornata.

È possibile trovare un esempio nell'esempio di esempio di esempio Breadcrumb da Apple. Breadcrumb link

+0

Grazie @SorinA - Come ho detto, sono andato con l'approccio di @ AtomRiot al momento. Ma nel prossimo aggiornamento per l'app, verificherò l'esempio di Breadcrumb per vedere se può essere un miglioramento. – adriaan