Я хочу, чтобы камера фокусировалась на местоположении пользователя, поэтому я настроил камеру на это в onLocationChanged. Но я также хочу иметь возможность вращать камеру. Проблема в том, что когда я делаю это, снова вызывается onLocationChanged, и моя камера возвращается к тому месту, где я его установил, и вращение становится невозможным.
Я хочу, чтобы камера могла постоянно фокусироваться на положении пользователя, а также свободно вращаться. Я попытался удалить форму настройки камеры onLocationChanged и вместо этого настроить ее на основе последнего известного местоположения, но затем, когда я перемещаю местоположения, камера не следует за мной.
onLocationChanged Code
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
mMap.clear();
LatLng currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
mMap.addMarker(new MarkerOptions().position(currentLocation).title("You Are Here"));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(currentLocation)
.zoom(25)
.bearing(200)
.tilt(90)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
...
После предоставления разрешения на основании последнего известного местоположения
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
mMap.clear();
LatLng userLocation = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
mMap.addMarker(new MarkerOptions().position(userLocation).title("Your Location"));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(userLocation)
.zoom(25)
.bearing(0)
.tilt(90)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));