Android - 如何知道mapView是否正确加载?

时间:2012-01-23 09:32:32

标签: android map arcgis esri

我无法检测我的android地图应用程序中是否加载了mapview。在OnCreate方法中,当我分配地图URL时,我想知道是否发生任何问题。由于我的互联网连接或任何其他问题(如从REST服务加载地图)可能会出现问题。这是我的代码块;

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

在这一点之后,我尝试使用像if(map.isLoaded == false)这样的控件,但它不起作用,虽然map正确加载但它属于这个块。

任何人都可以帮助我吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

听起来可能发生的事情是代码在初始化之前检查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();
            }
        }
     });