Runnable для myLocationOverlay.runOnFirstFix не вызывается и getMyLocation () имеет значение null - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь получить текущее местоположение и отобразить его на карте OSMdroid внутри приложения Android. Но у меня нет местоположения, и Runnable, который должен вызываться при первом обнаружении местоположения, никогда не вызывается.

Я пробовал разных провайдеров, все разрешения включены, и местоположение GPS тоже.

private void getCurrentLocation() {
    GpsMyLocationProvider provider = new GpsMyLocationProvider(this);
    provider.addLocationSource(LocationManager.GPS_PROVIDER);
    provider.addLocationSource(LocationManager.NETWORK_PROVIDER);

    myLocationOverlay = new MyLocationNewOverlay(provider, mMapView);
    myLocationOverlay.enableMyLocation();
    myLocationOverlay.setDrawAccuracyEnabled(true);

    myLocationOverlay.runOnFirstFix(new Runnable() {
        public void run() {
            // never reaches this point
            Timber.i("runOnFirstFix");
        }
    });

    mMapView.getOverlays().add(myLocationOverlay);

    if (myLocationOverlay.getMyLocation() == null) {
        // this shows up
        Timber.i("Location not retrieved");
    }
}

Я понимаю, что местоположение может быть не найдено, как только наложение будет добавлено, но я не понимаю, почему Runnable не работает

...