Если я правильно понимаю ваш пост, проблема в том, что не отображается местоположение, когда 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 ⚠️