2016-05-26 9 views
7

Sto utilizzando l'API di Google Maps Android v2 in cui visualizzo la mia posizione Dispositivo come un indicatore di GoogleMap su una mappa. Ho un listener (LocationServices.FusedLocationApi.requestLocationUpdates ...) collegato alla mappa per gestire ogni cambiamento di posizione GPS. Ogni volta che ricevo una nuova posizione, aggiorno il Marcatore (la mia posizione) e la Fotocamera sulla Mappa e praticamente mi mostra che mi sto muovendo mentre guido.RUOTARE Google-Map per visualizzare la mia DIRECTION in tempo reale

Tuttavia ... Ho bisogno di aiuto per avere MAP ruotare e/o visualizzazione sulla stessa direzione che mi sono spostato su. Voglio dire, mentre guido ho bisogno di ruotare la MAP dove posso vedere sulla mia mappa-lato sinistro quello che ho sulla mia vita reale sinistra e quindi lo stesso con la destra. Dal momento che la direzione MAP è statica, il Marker (Me) si sta muovendo su di esso, ma il più delle volte la direzione non corrisponde alla direzione della mia auto in tempo reale.

Cosa devo fare con la mappa per realizzare questo effetto visivo?

+1

Quindi tecnicamente, si desidera implementare gli elenchi di sensori, quindi far reagire la mappa in base ai dati nel callback (se a destra oa sinistra). Controlla questi post: 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 –

risposta

16

Stavo indovinando come sia possibile che l'API di Google Maps non fornisca un tale desiderio di effetto visivo comune. Ho sbagliato ... si chiama CUSCINETTO.

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)); 
} 

Dal impostare il mio localizzazione modifiche da notificare ogni 2 secondi ...

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

Io uso quello stesso luogo per elaborare la nuova posizione, nonché per l'aggiornamento della fotocamera (nuovo cuscinetto) :

public void onLocationChanged(Location location) { 

// ... process location 

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

TESTATO + LAVORO = FATTO!

+0

Grazie signore !!! –

+0

Come possiamo farlo in V3? Si prega di suggerire. Inoltre, ho postato una domanda simile per ruotare la mappa di 360 gradi cambiando il cuscinetto 3 volte (ogni volta di 120 gradi per ruotare di un ciclo attorno a un punto centrale) ma ci sono rallentamento e sobbalzi. Come posso evitarlo. https://stackoverflow.com/questions/48123738/gmap-bearing-rotation-in-smooth-motion –