android - центрирование камеры на месте пользователя в проблемах onLocationChanged - PullRequest
0 голосов
/ 25 января 2020

Я хочу, чтобы камера фокусировалась на местоположении пользователя, поэтому я настроил камеру на это в 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));
...