9

Ich entwickle eine App, die MapView mit einem Kompass drehen muss. Ich weiß, wie man die Kamera dreht, aber ich muss das MapView mit dem Kompass drehen. Der Mittelpunkt sollte der aktuelle Standort sein. Ich habe Codes für Maps V1 gefunden, aber ich muss es mit Maps V2 tun.Android Karten v2 drehen mapView mit Kompass

Antwort

18

OK, ich habe es selbst herausgefunden. Zuerst müssen Sie die Peilung vom Kompass berechnen. dann kann die Maps api-2 Kamera gedreht werden.

public void updateCamera(float bearing) { 
      CameraPosition currentPlace = new CameraPosition.Builder() 
        .target(new LatLng(centerLatitude, centerLongitude)) 
        .bearing(bearing).tilt(65.5f).zoom(18f).build(); 
      googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(currentPlace)); 

    } 

gesetzt SensorListener in Ihrem Code und diese Methode in onSensorChanged Ereignis nennen. Ich habe einen Neigungswert hinzugefügt, sodass die Karte in 3D gedreht wird.

+0

Nicht, dass es zu viel zählt, aber .bearing ist ein Schwimmer. – Chrispix

+4

Wie bekommen Sie Peilung? – sealskej

+0

Wenn Sie GoogleMap anstelle von MapView verwenden, können Sie das Ereignis mMap.setOnMyLocationChangeListener verwenden. –

2

In Ihrem GoogleMap-Objekt können Sie auf getMyLocation-Methode zugreifen. Diese letzte gibt ein Location-Objekt zurück, das die getBearing-Methode enthält. Dieser gibt einen Gleitkommawert [0..360] zurück, der von der letzten bekannten Position und dem aktuellen Ort berechnet wurde, 0 ° ist die Nordachse, die Drehung ist im Uhrensignal.

fortzusetzen, Sie einen Code wie verwenden können:

GoogleMap gMap = ..... 
float bearing = gMap.getMyLocation().getBearing(); 
CameraPosition newCamPos = new CameraPosition(latLngObject, 
      zoomValue, 
      tiltValue, 
      bearing); 
gMap.animateCamera(CameraUpdateFactory.newCameraPosition(newCamPos), durationValue, null); 
+0

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