Se si utilizza il GPS per localizzare l'utente, l'oggetto Location
onLocationChanged
contiene bearing.
Se avete solo due coordinate (ad esempio, si hanno solo coordinate dal fornitore di percorso di rete), è possibile utilizzare Location.bearingTo()
per calcolare il cuscinetto di due coordinate:
Location prevLoc = ... ;
Location newLoc = ... ;
float bearing = prevLoc.bearingTo(newLoc) ;
Se si dispone di un cuscinetto, è possibile impostare la rotazione del marcatore con MarkerOptions.rotation()
:
mMap.addMarker(new MarkerOptions()
.position(markerLatLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker))
.anchor(0.5f, 0.5f)
.rotation(bearing)
.flat(true));
è necessario impostare la anchor al punto che si desidera ruotare intorno, ed è anche il punto che si desidera essere nella posizione impostata al marcatore. (0.5, 0.5) è il centro dell'immagine.
Ovviamente sai come trovare la posizione. Prima del primo ciclo, impostare la pos precedente come corrente. Quindi il tuo loop calcola continuamente la distanza tra la posizione precedente e quella attuale e quando è abbastanza grande da importare, la direzione con qualcosa come 'atan2 (dy, dx)' a quel punto si imposta l'orientamento del marker, quindi ricorda 'previous = = current' e fai un altro ciclo. –
Perché non usi il 'bearing' dell'oggetto' Location'? Puoi impostarlo su 'CameraPosition'. – rom4ek