版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38357358/article/details/84753673
arcgis版本:arcgis-android:100.0.0
图层类型:使用FeatureLayer
数据类型:MMPK,GEODATABASE
//图层加载类
LayerUtil{
private static ArrayList<FeatureLayer> mFeatureLayerList;
public interface LayerResult {
void getLayer();
}
//type为离线数据类型,path离线数据存放的位置
public static void loadLayer(LayerType type, String path, LayerResult layerResult) {
mFeatureLayerList = new ArrayList<FeatureLayer>();
switch (type) {
case OPERATIONALLAYER_MMPK:
final MobileMapPackage mobileMapPackage = new MobileMapPackage( path);
mobileMapPackage.loadAsync();
mobileMapPackage.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
LoadStatus mainLoadStatus = mobileMapPackage.getLoadStatus();
if (mainLoadStatus == LoadStatus.LOADED) {
List<ArcGISMap> mArcGisMaps = mobileMapPackage.getMaps();
for (ArcGISMap mArcGisMap : mArcGisMaps) {
LayerList mmpkOperationalLayers = mArcGisMap.getOperationalLayers();
for (Layer layer : mmpkOperationalLayers) {
if (layer instanceof FeatureLayer) {
FeatureLayer mFeatureLayer = (FeatureLayer) layer;
mFeatureLayerList.add(mFeatureLayer);
}
mLayerResult.getLayer();
}
mmpkOperationalLayers.clear();
}
}
}
});
break;
case GEODATABASE:
final Geodatabase geodatabase = new Geodatabase(path);
geodatabase.loadAsync();
geodatabase.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
List<GeodatabaseFeatureTable> featureTables = geodatabase.getGeodatabaseFeatureTables();
int dataCount = featureTables.size();
for (int i = dataCount - 1; i > -1; i--) {
FeatureLayer featureLayer = new FeatureLayer(featureTables.get(i));
mFeatureLayerList.add(featureLayer);
}
mLayerResult.getLayer();
}
});
break;
}
}
public static ArrayList<FeatureLayer> getFeatureLayerList() {
return mFeatureLayerList;
}
}
//使用上述方法加载离线图层
MapView mainMapView = (MapView) findViewById(R.id.mapView);//esri地图控件
LayerList mainLayerList = mainMapView.getMap().getOperationalLayers(); //获取当前地图加载的业务图层集合
LayerUtil layerUtil = new LayerUtil();
layerUtil.loadLayer(LayerType.GEODATABASE, path, new LayerManagerUtil.LayerResult() {
@Override
public void getLayer() {
mLayerList = layerUtil .getFeatureLayerList();
for (int i = 0; i < mLayerList.size(); i++) {
FeatureLayer featureLayer = (FeatureLayer) mLayerList.get(i);
if (!featureLayer.isLabelsEnabled()) {
featureLayer.setLabelsEnabled(true);
}
mainLayerList.add(featureLayer);
featureLayer.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.getApplicationContext(), "加载成功", Toast.LENGTH_SHORT).show();
}
});
}
}
});