8

Quelqu'un a-t-il une idée de la façon dont la mise en œuvre de cette animation est possible dans google map api v2. Check out this here. Je voudrais savoir comment cela est fait. S'il vous plaît laissez-moi savoir si quelqu'un a un code d'échantillon à ce sujet.Google Map v2 Marker Animation

Merci d'avance.

+0

@GrlsHu. bonjour .. j'ai besoin de votre aide s'il vous plaît – Piyush

+0

Pour animer les routes polyline github.com/amalChandran/google-maps-route-animation – amalBit

Répondre

9

J'ai trouvé un solution qui a fonctionné pour moi:

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

Interpolator interpolator = new LinearInterpolator(); Cette ligne donnant une erreur ... "Type Incompatible" –

+0

Assurez-vous d'importer: importer android.view.animation.Interpolator; importez android.view.animation.LinearInterpolator; Et pas l'autre Interpolator. – apmartin1991

+0

J'ai trouvé un bug. Est-ce nécessaire d'ajouter ces deux lignes: \t \t \t \t \t \t si (écoulé> durée) \t \t \t \t \t \t \t = durée écoulé; – Master

7

Vous pouvez modifier la position d'un Marker à tout moment en appelant le setPosition(). Vous pouvez modifier la position de la "caméra" (c'est-à-dire le centre et le niveau de zoom de la carte) en appliquant un objet CameraUpdate en utilisant moveTo() ou animateTo() sur GoogleMap. Si vous les combinez avec une boucle de synchronisation de la lumière (par exemple, en utilisant postDelayed()), vous devriez obtenir un effet d'animation similaire.

+0

Pouvez-vous s'il vous plaît fournir un code afin que je puisse avoir une meilleure idée de la mise en œuvre. J'ai essayé d'animer la carte en utilisant la méthode CameraUpdateFactory.scrollBy. Mais pas trouvé un moyen d'animer le sur le chemin sur la carte. – GrIsHu

+1

@Grishu: "Pouvez-vous s'il vous plaît fournir un code afin que je puisse avoir une meilleure idée de la mise en œuvre" - Je n'ai pas de mensonge qui gère votre scénario. "Mais ne trouve aucun moyen d'animer le sur le chemin sur la carte" - vous devez trouver "le chemin sur la carte" vous-même, en utilisant un service Web (vraisemblablement), puis mettre à jour les positions du "Marqueur" le long de ce chemin. – CommonsWare

+0

Ok, merci pour votre aide. – GrIsHu

0

Bonne nouvelle, c'est que l'API Google Map v2 fournit les nouveaux contrôles de la caméra. Vous pouvez vérifier les nouvelles fonctionnalités et comment les utiliser directement here sur la chaîne Youtube de l'équipe des développeurs Android.

Il fournit également animation, inclinaison, roulement ... mais je pense que la vidéo est très détaillée et parle aussi d'applications comme celle de votre exemple.

Amusez-vous, et donnez-moi un lien lorsque vous avez terminé votre application.