Местоположение немедленно меняется с определенного местоположения на мое текущее местоположение на карте Скобблер

Я новичок в Skobbler map, В моем Skobbler map, Я получаю свое текущее местоположение в onCurrentPositionUpdate метод.

SKCoordinateRegion region = new SKCoordinateRegion();
        region.setCenter(currentPosition.getCoordinate());
        region.setZoomLevel(13);
        mapView.changeMapVisibleRegion(region, true);

Итак, он показывает мое текущее местоположение.

Когда я двигаюсь на некоторое расстояние от моего текущего местоположения, перетаскивая карту следующим образом:

Но через несколько 4 или 5 секунд он сразу же возвращается к моему текущему местоположению. Что можно сделать, чтобы остановить это движение, потому что я хочу вернуться в свое текущее местоположение только после нажатия кнопки. В моей кнопке я использую:

 @OnClick(R.id.fab_gps)
    public void goToMyGpsLocation(View view) {
        if (mapView != null && currentPosition != null) {
            mapView.getMapSettings().setCurrentPositionShown(true);
       } else{
            if(Helper.isGPSEnabled(this)){
                requestCurrentPositionProvider();
           }else{
                Helper.alertbox("GPS not enabled", "Please enable gps before you are directed to your current location", this);
            }
        }
    }

В моем requestCurrentPositionProvider метод:

public void requestCurrentPositionProvider(){


        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            Permissions.requestPermission(this, LOCATION_PERMISSION_REQUEST_CODE,
                    Manifest.permission.ACCESS_FINE_LOCATION, true);
        } else{
            if(mapView != null) {
                mapView.getMapSettings().setCurrentPositionShown(true);

            }
            if(Helper.isGPSEnabled(this)){
                showSnackBar(findViewById(android.R.id.content));

                currentPositionProvider = new SKCurrentPositionProvider(this);
                currentPositionProvider.setCurrentPositionListener(this);
                currentPositionProvider.requestLocationUpdates(MapUtils.hasGpsModule(this), MapUtils.hasNetworkModule(this), false);

            }

            else {
             Helper.alertbox("GPS not enabled", "Please enable gps before you are directed to your current location", this);
                }

Что-то вроде Camera движение меняется так быстро. Как мне это остановить? Что можно сделать на onClick метод, чтобы я вернул свое текущее местоположение только после нажатия кнопки?

2 ответа

mapView.animateCamera(CameraUpdateFactory.zoomTo(16), 5000, null);

Это помогает анимировать вашу камеру на 5 секунд, вы можете изменить время в зависимости от ваших требований.

еще попробуйте это

mapView.animateToLocation(new SKCoordinate(37.7765, -122.4200), 5000);

Я поняла что твой onCurrentPositionUpdate() метод содержит:

SKCoordinateRegion region = new SKCoordinateRegion();
region.setCenter(currentPosition.getCoordinate());
region.setZoomLevel(13);
mapView.changeMapVisibleRegion(region, true);

Это, конечно, центрирует вид карты в соответствии с вашим текущим местоположением при каждом "обновлении текущего местоположения", то есть при обновлении местоположения.

Вы запросили обновления местоположения GPS. Если я правильно понял, это вызовет onCurrentPositionUpdate() метод. (Это не очень видно из фрагментов кода, но разве это не то, как работает приложение карты Скобблера.)...

Даже если вы на самом деле не двигаетесь, может быть некоторое колебание местоположения GPS, и метод может вызываться каждые несколько секунд.

Если вы тем временем перетаскиваете карту, она будет отцентрирована на "текущую позицию" при каждом обновлении местоположения GPS.

Поэтому, если вы хотите сохранить выбранное вручную состояние карты, не всегда центрируйте его в истинном текущем местоположении при каждом обновлении местоположения в onCurrentPositionUpdate(),

Другие вопросы по тегам