【问题标题】:Android - How to know if mapView is properly loaded?Android - 如何知道 mapView 是否正确加载?
【发布时间】:2012-02-16 16:14:08
【问题描述】:
我在检测我的 android 地图应用程序中是否加载了 mapview 时遇到了问题。在 OnCreate 方法中,当我分配地图 URL 时,我想知道是否出现任何问题。由于我的互联网连接或任何其他问题(例如从 REST 服务加载地图),可能会出现问题。这是我的代码块;
map.addLayer(newArcGISDynamicMapServiceLayer("any map URL"));
在此之后,我尝试使用 if(map.isLoaded==false) 之类的控件,但它不起作用,尽管地图已正确加载,但它属于此块。
谁能帮帮我?
提前致谢
【问题讨论】:
标签:
android
map
arcgis
esri
【解决方案1】:
听起来可能发生的事情是代码在初始化之前检查 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();
}
}
});