8

Czy ktoś ma pomysł, jak ta implementacja animacji jest możliwa w google map api v2. Check out this here. Chciałbym wiedzieć, jak to się robi. Proszę dać mi znać, jeśli ktoś ma jakiś przykładowy kod na ten temat.Google Map v2 Animacja znaczników

Z góry dziękuję.

+0

@GrlsHu. cześć .. potrzebuję twojej pomocy, proszę – Piyush

+0

Animowanie tras polilinii github.com/amalChandran/google-maps-route-animation – amalBit

Odpowiedz

9

znalazłem solution że pracował dla mnie:

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 = nowy LinearInterpolator(); W tym wierszu występuje błąd "Niekompatybilny typ" –

+0

upewnij się, że importujesz: import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; I nie druga Interpolator. – apmartin1991

+0

znalazłem błąd. Należy dodać te dwie linie: \t \t \t \t \t \t if (upłynął> czas trwania) \t \t \t \t \t \t \t upłynął = czas trwania; – Master

7

Zapraszamy do zmiany pozycji Marker w dowolnym momencie, dzwoniąc pod numer setPosition(). Możesz zmienić położenie "kamery" (to jest środka mapy i poziomu powiększenia) w dowolnym punkcie, stosując obiekt CameraUpdate, używając moveTo() lub animateTo() na GoogleMap. Łącząc je z jasną pętlą czasową (np. Używając postDelayed()), należy pozwolić uzyskać podobny efekt animacji.

+0

Czy możesz podać kod, aby uzyskać lepszy pomysł wdrożenia? Próbowałem animować mapę przy użyciu metody CameraUpdateFactory.scrollBy .. jej działanie działa dobrze. Ale nie udało się znaleźć animacji na ścieżce na mapie. – GrIsHu

+1

@Grishu: "Czy możesz podać kod, aby uzyskać lepszy pomysł implementacji" - nie mam żadnego kłamstwa, który poradzi sobie z twoim scenariuszem. "Ale nie udało się znaleźć animacji na ścieżce na mapie" - musisz sam znaleźć "ścieżkę na mapie", korzystając z niektórych usług sieci Web (prawdopodobnie), a następnie zaktualizować pozycje "Znacznika", tak aby były różnymi punktami wzdłuż tej ścieżki. – CommonsWare

+0

Dobra, dziękuję za pomoc. – GrIsHu

0

Wspaniałą wiadomością jest to, że interfejs API Google Map w wersji 2 udostępnia nowe elementy sterowania kamerą. Możesz sprawdzić nowe funkcje i korzystać z nich bezpośrednio here na kanale Youtube zespołu programistów Androida.

Dostarcza również animacji, pochylenia, łożyska ... ale myślę, że wideo jest bardzo szczegółowe, a także mówi o aplikacjach takich jak ten w twoim przykładzie.

Baw się dobrze i podaj mi link po zakończeniu aplikacji.

Powiązane problemy