Android - Как узнать, правильно ли загружен mapView? - PullRequest
3 голосов
/ 23 января 2012

У меня проблемы с определением, загружен ли просмотр карты в моем приложении для Android. В методе OnCreate, когда я назначаю URL карты, я хочу знать, возникла ли какая-либо проблема. Проблемы могут возникнуть из-за моего интернет-соединения или любых других проблем, таких как загрузка карты из служб REST. Вот мой блок кода;

map.addLayer(newArcGISDynamicMapServiceLayer("any map URL"));

после этого момента я пытаюсь использовать элемент управления вроде if (map.isLoaded == false), но он не работает, хотя карта загружена правильно и попадает в этот блок.

Кто-нибудь может мне помочь?

Заранее спасибо

1 Ответ

3 голосов
/ 07 июня 2012

Похоже, что может случиться, если код проверяет map.isLoaded () перед его инициализацией. Проверьте MapView Reference для официального объяснения о том, как правильно проверять инициализацию.

Я расширил ссылочный код

    map = (MapView) findViewById(R.id.map);
    tileLayer = new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer");

    tileLayer.setOnStatusChangedListener(new OnStatusChangedListener() {
        public void onStatusChanged(Object source, STATUS status) {
            if (OnStatusChangedListener.STATUS.INITIALIZED == status){
                map.addLayer(tileLayer);  //when layer is initialized add to map
            }
        }
    });


    map.setOnStatusChangedListener(new OnStatusChangedListener() {
       private static final long serialVersionUID = 1L;

       public void onStatusChanged(Object source, STATUS status) {
           //conditional checks if mapView's status has changed to initialized 
            if (OnStatusChangedListener.STATUS.INITIALIZED == status && source == map) 
            { 
                Toast mapViewToast = Toast.makeText(ActivityName.this, "MapView loaded", Toast.LENGTH_LONG);
                mapViewToast.show();
            }
        }
     });
...