2016-05-26 5 views
7

Ich benutze die Google Maps Android API v2, wo ich mein Gerät Standort als GoogleMap-Marker auf einer Karte anzeigen. Ich habe einen Listener (LocationServices.FusedLocationApi.requestLocationUpdates ...) an die Karte anhängen, um jede GPS-Standortänderung zu behandeln. Jedes Mal, wenn ich einen neuen Ort erhalte, aktualisiere ich den Marker (meine Position) sowie die Kamera auf der Karte und es sieht so aus, als würde ich mich bewegen, während ich fahre.ROTATE Google-Map, um meine Echtzeit anzuzeigen RICHTUNG

aber ... Ich brauche etwas Hilfe, um den MAP drehen zu lassen und/oder Anzeige auf die gleiche Richtung, die ich mich bewege. Ich meine, während ich fahre, muss ich den MAP drehen, wo ich auf meiner Karte links sehen kann, was ich auf meiner realen linken Seite habe, und so das gleiche mit der rechten. Da die MAP-Richtung statisch ist, bewegt sich der Marker (Me) darauf, aber die Richtung stimmt meistens nicht mit der Richtung in Echtzeit überein.

Was soll ich mit der Karte tun, um diesen visuellen Effekt zu erzielen?

+1

Also technisch möchten Sie die Sensorlistener implementieren, dann muss die Karte basierend auf den Daten im Callback reagieren (wenn links oder rechts). Überprüfen Sie diese Posts: 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 –

Antwort

16

Ich rate, wie möglich ist, dass die Google Map-API nicht solche allgemeinen visuellen Effekt Wunsch bietet. Ich lag falsch ... es heißt BEARING.

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

Da meine Lage Änderungen, die ich Setup ...

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

alle 2 Sekunden benachrichtigt werden, verwende ich am selben Ort, um den neuen Standort als auch zu verarbeiten, wie die Kamera (neue Lager) zu aktualisieren :

public void onLocationChanged(Location location) { 

// ... process location 

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

TESTEN + ARBEITEN = FERTIG!

+0

Vielen Dank Sir !!! –

+0

Wie können wir das in V3 machen? Bitte vorschlagen. Auch habe ich ähnliche Frage gestellt, um Karte 360 ​​Grad zu drehen, indem Sie Lager 3 Mal (jedes Mal um 120 Grad, um 1 Zyklus um einen Mittelpunkt zu drehen) drehen, aber es gibt Erleichterung und Idioten. Wie kann ich das vermeiden? https://stackoverflow.com/questions/48123738/gmap-bearing-rotation-in-smooth-motion –

Verwandte Themen