mapbox при отключении gps - PullRequest
       16

mapbox при отключении gps

0 голосов
/ 21 февраля 2019

Я создаю приложение для Android с mapbox на основе предложенного примера официальной документации.

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

однако приложение, использующее хорошо приоритет HIGT_ACCURACY и мобильное устройство передачи данных, включено.

Есть идеи?

спасибо

изменить ** местоположение 1011 *

private void enableLocationComponent() {
    if (PermissionsManager.areLocationPermissionsGranted(this)) {
        LocationComponentOptions options = LocationComponentOptions.builder(this)
                .trackingGesturesManagement(true)
                .accuracyAlpha(0)
                .maxZoom(getResources().getInteger(R.integer.zoom_max))
                .minZoom(getResources().getInteger(R.integer.zoom_min))
                .accuracyColor(ContextCompat.getColor(this, R.color.primary))
                .build();
        mapboxMap.getLocationComponent().activateLocationComponent(this, options);
        mapboxMap.getLocationComponent().setLocationComponentEnabled(true);
        mapboxMap.getLocationComponent().setCameraMode(CameraMode.TRACKING_COMPASS);
        mapboxMap.getLocationComponent().setRenderMode(RenderMode.COMPASS);
        mapboxMap.getLocationComponent().getLocationEngine().setPriority(LocationEnginePriority.HIGH_ACCURACY);
        mapboxMap.getLocationComponent().getLocationEngine().addLocationEngineListener(this);
    } else {
        permissionsManager = new PermissionsManager(this);
        permissionsManager.requestLocationPermissions(this);
    }
}

отлично работает, если включен GPS.местоположение не отображается вообще, если GPS не работает.

1 Ответ

0 голосов
/ 01 марта 2019

Если я правильно понимаю ваш пост, проблема в том, что не отображается местоположение, когда GPS отключен при запуске приложения?

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

Контекст, объясняющий, почему это происходит

Вместо доставки пользовательского LocationEngine SDK извлекает лучший из найденных на устройстве.Подробнее об этом здесь .

Вы не сообщили об этом в своем фрагменте кода, но лучший способ получить последнее обновление местоположения - переопределить метод onSuccess методаLocationEngineCallback.Вот так:

@Override
public void onSuccess(LocationEngineResult result) {
    MainActivity activity = activityWeakReference.get();

    if (activity != null) {
        Location location = result.getLastLocation();

        if (location == null) {
            return;
        }


        // Pass the new location to the Maps SDK's LocationComponent
       if (activity.mapboxMap != null && result.getLastLocation() != null) {
            activity.mapboxMap.getLocationComponent().forceLocationUpdate(result.getLastLocation());
       }

     }
}

(обратите внимание, что я вытащил приведенный выше код из документации .)

Если устройство, на котором вы запускаете приложение, не имеет последнихинформация о местоположении - что может произойти, если вы отключили GPS на длительный период времени - LocationEngine не получит ничего, а LocationComponent будет нечего отображать.

Почему при добавлении LocationEngine служб Google Playрешить проблему?

Несколько пользовательских LocationEngines, одним из самых распространенных из которых является Google, используют дополнительные сигналы для подтверждения текущего местоположения устройства (например, WiFi).В результате, даже если GPS отключен, вероятность того, что движок вернет значение null, значительно ниже.


⚠️ Отказ от ответственности: в настоящее время я работаю в Mapbox ⚠️

...