Android Studio Карты Google продолжают возвращаться к местоположению пользователя при изучении карты - PullRequest
0 голосов
/ 15 марта 2019

Контекст: Я работаю над приложением, которое позволяет пользователям видеть других пользователей в радиусе 20 миль.Когда они входят в систему, они отправляются в MapsActivity, которая увеличивает их текущее местоположение и показывает другим онлайн-пользователям в пределах 20 миль.

Проблема: Каждый раз, когда я прокручиваю карту, я возвращаюсь к своему текущему местоположению, и если я уменьшаю или увеличиваю масштаб, он возвращается к тому же масштабу, который я установил.Я даже пробовал эту строку, но она не работала:

eaterGoogleMap.getUiSettings().setAllGesturesEnabled(true);

Что мне нужно сделать: Приблизить к их местоположению при первом открытии MapsActivity вмое приложение.Разрешить пользователю иметь возможность прокручивать карту точно так же, как в приложении Google Maps, а также обновлять свое положение при перемещении, как в приложении Google Maps.

Что я сделал:

@Override
public void onConnected(Bundle bundle) {


        // Constantly Update User location every 1.1 seconds!
        locationRequest = new LocationRequest();
        locationRequest.setInterval(1100);
        locationRequest.setFastestInterval(1100);
        locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);


        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
            return;
        }

        Log.d("reque", "check here");
    }

 @Override
public void onLocationChanged(Location location) {

    lastLocation = location;

    if (currentUserLocationMarker != null) {
        currentUserLocationMarker.remove();
    }

    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());

    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title(getString(R.string.user_current_location_marker_title));
    markerOptions.visible(false);

    currentUserLocationMarker = eaterGoogleMap.addMarker(markerOptions);

    float zoom = 17.0f;

    eaterGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    eaterGoogleMap.getUiSettings().setZoomControlsEnabled(true);
    eaterGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
    eaterGoogleMap.getUiSettings().setRotateGesturesEnabled(false);

    // Begin to locate all online Vendors to display on map
    locateOnlineVendors();

}

1 Ответ

1 голос
/ 15 марта 2019

Используйте флаг для управления действием масштабирования.Или только увеличьте onConnect (это означает первый раз). Кстати, вам не нужно каждый раз удалять маркеры, вы можете манипулировать его положением с помощью marker. setPosition(...)

 boolean cameraSet = false;
 Marker marker;
 @Override
 public void onLocationChanged(Location location) {
    ...
    if(!cameraSet){
        eaterGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
        cameraSet = true;
    }

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...