8

Qualcuno ha idea di come sia possibile implementare questa animazione in google map api v2. Check out this here. Mi piacerebbe sapere come si fa. Per favore fatemi sapere se qualcuno ha qualche codice di esempio in merito.Google Map v2 Marker Animation

Grazie in anticipo.

+0

@GrlsHu. ciao .. ho bisogno del tuo aiuto per favore – Piyush

+0

Per animare percorsi polilinea github.com/amalChandran/google-maps-route-animation – amalBit

risposta

9

Ho trovato un solution che ha funzionato per me:

final LatLng target = NEW_LOCATION; 

final long duration = 400; 
final Handler handler = new Handler(); 
final long start = SystemClock.uptimeMillis(); 
Projection proj = map.getProjection(); 

Point startPoint = proj.toScreenLocation(marker.getPosition()); 
final LatLng startLatLng = proj.fromScreenLocation(startPoint); 

final Interpolator interpolator = new LinearInterpolator(); 
handler.post(new Runnable() { 
    @Override 
    public void run() { 
     long elapsed = SystemClock.uptimeMillis() - start; 
     if (elapsed > duration) { 
      elapsed = duration; 
     } 
     float t = interpolator.getInterpolation((float) elapsed/duration); 
     double lng = t * target.longitude + (1 - t) * startLatLng.longitude; 
     double lat = t * target.latitude + (1 - t) * startLatLng.latitude; 
     marker.setPosition(new LatLng(lat, lng)); 
     if (t < 1.0) { 
      // Post again 10ms later. 
      handler.postDelayed(this, 10); 
     } else { 
      // animation ended 
     } 
    } 
}); 
+0

Interpolatore interpolatore = nuovo LinearInterpolator(); Questa riga che genera errore ... "Tipo incompatibile" –

+0

assicurarsi di importare: import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; E non l'altro interpolatore. – apmartin1991

+0

ho trovato un bug. È necessario aggiungere queste due righe: \t \t \t \t \t \t se (trascorso> durata) \t \t \t \t \t \t \t trascorsi = durata; – Master

7

Siete invitati a modificare la posizione di un Marker in qualsiasi momento chiamando lo setPosition(). Puoi modificare la posizione della "fotocamera" (ad esempio, il centro della mappa e il livello di zoom) in qualsiasi momento applicando un oggetto CameraUpdate utilizzando moveTo() o animateTo() su GoogleMap. Combinandoli con un ciclo di temporizzazione leggero (ad esempio, utilizzando postDelayed()) dovrebbe consentire di ottenere un effetto di animazione simile.

+0

Puoi fornire qualche codice in modo che io possa avere un'idea migliore dell'implementazione. Ho provato ad animare la mappa usando il metodo CameraUpdateFactory.scrollBy .. funziona bene anche. Ma non è stato trovato alcun modo per animare il percorso sulla mappa. – GrIsHu

+1

@Grishu: "Potete fornire un po 'di codice per farmi un'idea migliore dell'implementazione" - Non ho alcun bugiardo che gestisca il vostro scenario. "Ma non è stato trovato alcun modo per animare il percorso sulla mappa" - devi trovare tu stesso "il percorso sulla mappa", usando alcuni servizi Web (presumibilmente), quindi aggiornare le posizioni di "Marker" in vari punti lungo quel percorso. – CommonsWare

+0

Ok, grazie per il tuo aiuto. – GrIsHu

0

La grande novità è che Google Maps API v2 fornisce i nuovi controlli della fotocamera. È possibile controllare le nuove funzionalità e come utilizzarle direttamente here sul canale Youtube del team di sviluppatori Android.

Fornisce anche animazioni, inclinazione, rilevamento ... ma penso che il video sia molto dettagliato e parli anche di applicazioni come quella del tuo esempio.

Divertiti e dammi un collegamento quando hai finito la tua app.