zoukankan      html  css  js  c++  java
  • ArcGIS runtime 100 加载多种离线数据

      100.几忘记了,应该是.11。从毕设项目把离线数据的加载扒了下来,做的时候java和runtime都不会,边学边做,会有很多不规范的地方,后面做完了也懒得改了,仅供大家参考。

    //加载栅格数据
    public static void addReaster(Context context, MapView mMapView, String fileName) {
       rasterLayer = new RasterLayer(new Raster(context.getExternalFilesDir(null) + "/JQHMap/RasterImage/" + fileName));
       mMapView.getMap().getOperationalLayers().add(rasterLayer);
       rasterLayer.loadAsync();
       rasterLayer.addDoneLoadingListener(new Runnable() {
       @Override
       public void run() {
          try {
             mMapView.setViewpointGeometryAsync(rasterLayer.getFullExtent(), 10);   
              } catch (Exception e) {
              Log.e(TAG, e.toString() + "addReaster");
                      }
                }
         });
    }
    //加载tpk、tpkx
    public static void addTpk(Context context, MapView mMapView, String tpkFileName) {
    TileCache mainTileCache = new TileCache(context.getExternalFilesDir(null) + "/JQHMap/RasterImage/" + tpkFileName);
    mainTileCache.loadAsync();
    mainTileCache.addDoneLoadingListener(new Runnable() {
    @Override
    public void run() {
    if (mainTileCache.getLoadStatus() == LoadStatus.LOADED) {
    ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(mainTileCache);
    arcGISTiledLayer.setName(tpkFileName);
    mMapView.getMap().getOperationalLayers().add(arcGISTiledLayer);
    arcGISTiledLayer.addDoneLoadingListener(new Runnable() {
    @Override
            public void run() {
                        try {
                           if (arcGISTiledLayer.getLoadStatus() == LoadStatus.LOADED) {
                             mMapView.setViewpointGeometryAsync(arcGISTiledLayer.getFullExtent(), 10); 
                         }
                       } catch (Exception e) {
                  Log.e(TAG, e.toString() + "addTPK");
                }
              }
            });
          }
        }
      });
    }
    //添加vtpk
    public static void addVtpk(Context context, MapView mapView, String vtpkName) {
       VectorTileCache vectorTileCache = new VectorTileCache(context.getExternalFilesDir(null) + "/JQHMap/VectorData/" + vtpkName);
       vectorTileCache.loadAsync();
       vectorTileCache.addDoneLoadingListener(new Runnable() {
            @Override
            public void run() {
                if (vectorTileCache.getLoadStatus() == LoadStatus.LOADED) {
                   ArcGISVectorTiledLayer arcGISVectorTiledLayer = new ArcGISVectorTiledLayer(vectorTileCache);
                   arcGISVectorTiledLayer.setName(vtpkName);
                   mapView.getMap().getOperationalLayers().add(arcGISVectorTiledLayer);
                   arcGISVectorTiledLayer.addDoneLoadingListener(new Runnable() {
                   @Override
                   public void run() {
                      try {
                          if (arcGISVectorTiledLayer.getLoadStatus() == LoadStatus.LOADED) {
                              mapView.setViewpointGeometryAsync(arcGISVectorTiledLayer.getFullExtent(), 10); 
                           }
                      } catch (Exception e) {
                           Log.e(TAG, e.toString() + "addVtpk");
                       }
                   }
              });
          }
        }
            });
        }
     //添加shp数据
        public static void addShp(Context context, MapView mapView, String shpName) {
            ShapefileFeatureTable shapefileFeatureTable = new ShapefileFeatureTable(context.getExternalFilesDir(null) + 
    "/JQHMap/VectorData/" + shpName);
            ShapFileOperationUtils.loadVectorFile(context, mapView, null, shapefileFeatureTable, null, "shp");
        }
    //添加kml
    public static void addKMl(Context context, MapView mapView, String kmlName) {
           KmlDataset mainTileCache = new KmlDataset(context.getExternalFilesDir(null) + "/JQHMap/VectorData/" + kmlName);
            KmlLayer kmlLayer = new KmlLayer(mainTileCache);
            kmlLayer.setName(kmlName);
            mapView.getMap().getOperationalLayers().add(kmlLayer);
            kmlLayer.addDoneLoadingListener(new Runnable() {
                @Override
                public void run() {
                    try {
                        mapView.setViewpointGeometryAsync(kmlLayer.getFullExtent(), 10);//padding左右边界
                    } catch (Exception e) {
                        Log.e(TAG, e.toString() + "addRaster");
                    }
                }
            });
        }
    //添加geodatabase
    public static void addGeodatabase(Context context, MapView mapView, String geodatabaseName) {
       final Geodatabase geodatabase = new Geodatabase(context.getExternalFilesDir(null) + "/JQHMap/VectorData/" + geodatabaseName);
       geodatabase.loadAsync();
       geodatabase.addDoneLoadingListener(() -> {
            if (geodatabase.getLoadStatus() == LoadStatus.LOADED) {
                List<GeodatabaseFeatureTable> geodatabaseFeatureTables = geodatabase.getGeodatabaseFeatureTables();
                for (int i = 0; i < geodatabaseFeatureTables.size(); i++) { 
                    GeodatabaseFeatureTable geodatabaseFeatureTable = geodatabaseFeatureTables.get(i);
                    geodatabaseFeatureTable.loadAsync();
                    ShapFileOperationUtils.loadVectorFile(context, mapView, geodatabaseFeatureTable, null, null, "geodatabase");
                }
            } 
       });
    }
    //添加mmpk
    public static void addMMPK(Context context, MapView mapView, String mmpkName) {
            final MobileMapPackage mobileMapPackage = new MobileMapPackage(context.getExternalFilesDir(null) + 
    "/JQHMap/VectorData/" + mmpkName);
            mobileMapPackage.loadAsync();
            mobileMapPackage.addDoneLoadingListener(() -> {
                if (mobileMapPackage.getLoadStatus() == LoadStatus.LOADED) {
                    List<ArcGISMap> arcGISMaps = mobileMapPackage.getMaps();
                    ArcGISMap arcGISMap = arcGISMaps.get(0);
                    mapView.setMap(arcGISMap);
                }
            });
     }

    本文来自博客园,作者:季夏啸华,转载请注明原文链接:https://www.cnblogs.com/jiang2020/p/15744895.html

  • 相关阅读:
    <魔域>按键精灵脚本
    Windows下Java环境变量配置
    JDBC简单范例
    迅雷高速通道被举报无法下载问题
    wifi入侵思路
    连接WiFi工具类
    ActionBar+Fragment实现顶部标签页
    Fragment的基本用法
    opencv-python识别人脸
    string.Join 拼接在sql中特殊处理
  • 原文地址:https://www.cnblogs.com/jiang2020/p/15744895.html
Copyright © 2011-2022 走看看