2016-05-26 16 views
7

Używam interfejsu Google Maps Android API v2, w którym wyświetlam lokalizację urządzenia jako znacznik GoogleMap na mapie. Mam odbiornik (LocationServices.FusedLocationApi.requestLocationUpdates ...) dołącz do mapy, aby obsłużyć każdą zmianę lokalizacji GPS. Za każdym razem, gdy otrzymuję nową lokalizację, aktualizuję Marker (moją pozycję) oraz kamerę na mapie i prawie to pokazuje, jak poruszam się podczas jazdy.OBRÓĆ mapę Google, aby wyświetlić moją bieżącą DIRECTION

Jednak ... Potrzebuję pomocy w celu uzyskania MAP obracać i/lub wyświetlacz w tym samym kierunku, że jestem poruszającego się. Mam na myśli, że kiedy jeżdżę, muszę obrócić mapę, gdzie na lewej stronie mapy widzę to, co mam na moim prawdziwym lewym boku, a więc to samo z prawą. Ponieważ kierunek MAP jest statyczny, znacznik (ja) porusza się po nim, ale w większości przypadków kierunek nie odpowiada kierunkowi mojego samochodu w czasie rzeczywistym.

Co należy zrobić z mapą, aby uzyskać efekt wizualny?

+1

Z technicznego punktu widzenia, chcesz zaimplementować sensorlistenerów, a następnie aby mapa zareagowała na nie w oparciu o dane w wywoływaniu zwrotnym (jeśli są w lewo lub w prawo). Sprawdź to posty: http://stackoverflow.com/questions/6224577/, http://stackoverflow.com/q/2317428/4625829, http://stackoverflow.com/q/14320015/4625829, http: // stackoverflow.com/q/4308262/4625829, http://stackoverflow.com/q/36258490/4625829, http://stackoverflow.com/q/18162642/4625829 –

Odpowiedz

16

Zgaduję, jak jest możliwe, że interfejs API Map Google nie zapewnia tak powszechnego pożądania efektów wizualnych. Myliłem się ... nazywa się ŁOŻYSKO.

private void updateCameraBearing(GoogleMap googleMap, float bearing) { 
    if (googleMap == null) return; 
    CameraPosition camPos = CameraPosition 
      .builder(
        googleMap.getCameraPosition() // current Camera 
      ) 
      .bearing(bearing) 
      .build();     
    googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(camPos)); 
} 

od konfiguracji I moje zmiany lokalizacji być powiadamiany co 2 sekundy ...

mLocationRequest = LocationRequest.create() 
         .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) 
         .setInterval(POLLING_FREQ_2SECONDS) 
         .setFastestInterval(FASTEST_UPDATE_FREQ_2_SECONDS) 

używam tego samego miejsca na przetwarzanie nową lokalizację, a także do aktualizacji aparatu (nowe łożysko) :

public void onLocationChanged(Location location) { 

// ... process location 

updateCameraBearing(googleMap, location.getBearing()); 
} 

TESTOWANE + PRACA = ZROBIONE!

+0

Dziękujemy Sir! –

+0

Jak możemy to zrobić w V3? Proszę zasugeruj. Ponadto zamieściłem podobne pytanie, aby obrócić mapę o 360 stopni, zmieniając łożysko 3 razy (za każdym razem o 120 stopni, aby obrócić o 1 cykl wokół punktu środkowego), ale są łagodne i szarpane. Jak mogę tego uniknąć. https://stackoverflow.com/questions/48123738/gmap-bearing-rotation-in-smooth-motion –