8

Hat jemand eine Idee, wie diese Animation in google map api v2 möglich ist. Check out this here. Ich würde gerne wissen, wie das gemacht wird. Bitte lassen Sie mich wissen, wenn jemand einen Mustercode diesbezüglich hat.Google Map v2 Marker Animation

Vielen Dank im Voraus.

+0

@GrlsHu. hallo .. ich brauche deine hilfe bitte – Piyush

+0

Für das animieren von polylinienrouten github.com/amalChandran/google-maps-route-animation – amalBit

Antwort

9

fand ich eine solution die für mich gearbeitet:

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

Interpolatorinterpolator = new LinearInterpolator(); Diese Zeile gibt Fehler ... "Inkompatibler Typ" –

+0

stellen Sie sicher, dass Sie importieren: importieren android.view.animation.Interpolator; importieren android.view.animation.LinearInterpolator; Und nicht der andere Interpolator. – apmartin1991

+0

Ich habe einen Fehler gefunden. Ist notwendig, diese beiden Zeilen hinzuzufügen: \t \t \t \t \t \t if (verstrichene> Dauer) \t \t \t \t \t \t \t verstrichene = Dauer; – Master

7

Sie können die Position eines Marker jederzeit ändern, indem Sie setPosition() anrufen. Sie können die Position der "Kamera" (d. H. Den Mittelpunkt und die Zoomstufe der Karte) jederzeit an einem beliebigen Punkt ändern, indem Sie ein CameraUpdate Objekt mit moveTo() oder animateTo() auf GoogleMap anwenden. Kombinieren Sie diese mit einer Licht-Timing-Schleife (z. B. mit postDelayed()) sollten Sie einen ähnlichen Animationseffekt erzielen können.

+0

Kannst du mir bitte einen Code zur Verfügung stellen, damit ich eine bessere Vorstellung von der Implementierung bekomme. Ich habe versucht, die Karte mit CameraUpdateFactory.scrollBy Methode zu animieren .. es funktioniert sogar gut. Aber keine Möglichkeit gefunden, das auf dem Weg auf der Karte zu animieren. – GrIsHu

+1

@Grishu: "Können Sie mir bitte einen Code zur Verfügung stellen, damit ich mir eine bessere Vorstellung von der Implementierung machen kann" - Ich habe keine Lügen, die Ihr Szenario behandeln. "Aber keine Möglichkeit gefunden, das auf dem Pfad auf der Karte zu animieren" - Sie müssen "den Pfad auf der Karte" selbst finden, indem Sie (vermutlich) einen Web-Service verwenden und dann die "Marker" -Positionen an verschiedenen Punkten aktualisieren auf diesem Weg. – CommonsWare

+0

Ok, danke für deine Hilfe. – GrIsHu

0

Tolle Neuigkeiten ist, dass er Google Map API v2 die neue Kamera steuert. Sie können die neuen Funktionen und wie Sie sie direkt verwenden here auf dem Youtube-Kanal des Android-Entwicklerteams überprüfen.

Es bietet auch animieren, neigen, tragen ... aber ich denke, das Video ist sehr detailliert und spricht auch über Anwendungen wie die in Ihrem Beispiel.

Viel Spaß, und geben Sie mir einen Link, wenn Sie Ihre App fertig stellen.