Pracuję nad aplikacją, która musi obracać mapView za pomocą kompasu. Wiem, jak obracać kamerę, ale muszę obracać mapView za pomocą kompasu. Punkt centralny powinien być bieżącą lokalizacją. Znalazłem kody do Map V1, ale muszę to zrobić w Mapach V2Mapy systemu Android v2 obracaj mapView z kompasem
Odpowiedz
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.
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);
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 –
Nie to, że liczy się zbyt wiele, ale .bearing jest pływak. – Chrispix
Jak uzyskać łożysko? – sealskej
Jeśli używasz GoogleMap zamiast MapView, możesz użyć zdarzenia mMap.setOnMyLocationChangeListener. –