Odpowiedz

18

OK, sam to wymyśliłem. najpierw musisz obliczyć łożysko z kompasu. , a następnie kamera Api-2 Maps może być obracana.

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

    } 

ustawić SensorListener w kodzie i wywołać tę metodę w onSensorChanged imprezy. dodałem wartość pochylenia, aby mapa obróciła się w 3D.

+0

Nie to, że liczy się zbyt wiele, ale .bearing jest pływak. – Chrispix

+4

Jak uzyskać łożysko? – sealskej

+0

Jeśli używasz GoogleMap zamiast MapView, możesz użyć zdarzenia mMap.setOnMyLocationChangeListener. –

2

w obiekcie GoogleMap możesz uzyskać dostęp do metody getMyLocation. Ten ostatni zwraca obiekt Location, który zawiera metodę getBearing. Ten zwraca wartość zmiennoprzecinkową [0..360] obliczoną na podstawie ostatniej znanej lokalizacji i bieżącej lokalizacji, 0 ° jest osią północną, obrót jest w sensie zegara.

Aby wznowić, można użyć kodu jak:

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

Jak możemy to zrobić w V3? Proszę zasugeruj. Również 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ć 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 –

Powiązane problemy