IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> ArcGIS Runtime API for Android100.13.0加载TPK包、Runtime包、WMS地图服务、三维模式 -> 正文阅读

[移动开发]ArcGIS Runtime API for Android100.13.0加载TPK包、Runtime包、WMS地图服务、三维模式

ArcGIS Runtime API for Android 一直在升级,写法和用法和之前也有很大的变化。这里简单介绍一下使用ArcGIS Runtime API for Android100.13.0加载各类数据源。

加载TPK包

Tile package(TPK):包含地图文档的缓存数据,也就是切片后的数据,TPK一方面便于用户或组织在ArcGIS Online上分享数据,另一方面也为离线条件下访问数据提供一种方案。使用ArcMap就可以生成。

       
        MapView mMapView = findViewById(R.id.mapView);
        
        ArcGISMap map = new ArcGISMap(BasemapStyle.ARCGIS_TOPOGRAPHIC);
        
        mMapView.setMap(map);
        mMapView.setViewpoint(new Viewpoint(31.734, 119.315, 10000));

        TileCache tileCache=new TileCache(Environment.getExternalStorageDirectory()+ File.separator + getString(R.string.geopackage_path));//自己的tpk包所在路径
        ArcGISTiledLayer tiledLayer = new ArcGISTiledLayer(tileCache);
        Basemap basemap = new Basemap(tiledLayer);

        ArcGISMap mMap = new ArcGISMap(basemap);

        mMapView.setMap(mMap);

示例

加载Runtime包

Runtime包(geodatabse):是使用ArcMap生成一个矢量要素离线包,专门提供ArcGIS 移动端开发使用,后缀名为.geodatabase。注意这个不是在目录中创建的个人地理数据库。

生成数据

        //本地存储路径
        Geodatabase geodatabase=new Geodatabase(Environment.getExternalStorageDirectory()+ File.separator + getString(R.string.geopackage_path1));
        geodatabase.loadAsync();
        geodatabase.addDoneLoadingListener(()->{
            if (geodatabase.getLoadStatus() == LoadStatus.FAILED_TO_LOAD) {
                String error = "Geopackage failed to load: " + geodatabase.getLoadError();
                Log.e(TAG, error);
                Toast.makeText(this, error, Toast.LENGTH_LONG).show();
                return;
            }else {
                for (GeodatabaseFeatureTable geoPackageFeatureTable : geodatabase.getGeodatabaseFeatureTables()) {
                FeatureLayer featureLayer = new FeatureLayer(geoPackageFeatureTable);

                mMapView.getMap().getOperationalLayers().add(featureLayer);
            }
            }
            }
        );

示例

加载WMS服务

WMS地图服务:是一种遵从OGC标准的地图服务,在开发中经常遇到,ArcGIS Server自己可以发布WMS服务,但这里我调用的是使用GeoServer发布的WMS地图服务。

        MapView mMapView = findViewById(R.id.mapView);
        ArcGISMap map = new ArcGISMap(BasemapStyle.ARCGIS_TOPOGRAPHIC);
        mMapView.setMap(map);
        mMapView.setViewpoint(new Viewpoint(-42.31384, 146.82129, 10000));

        List<String> wmsLayerNames = new ArrayList<>();
        wmsLayerNames.add("tasmania");//GeoServer中图层的名字

        // 构造服务,这里一定要注意一定要写request=GetCapabilities,不能是其他的类型
        WmsLayer wmsLayer = new WmsLayer("http://192.168.1.121:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetCapabilities", wmsLayerNames);
        wmsLayer.setPreferredImageFormat(ArcGISMapImageLayer.ImageFormat.PNG);
        wmsLayer.setVisible(true);
        wmsLayer.setOpacity(0.5f);

        // 添加到地图
        map.getOperationalLayers().add(wmsLayer);

示例

加载GeoPackage

GeoPackage在ArcGIS中支持的不是非常好,但是栅格与矢量数据都可以存储。可以使用QGIS制作gpkg的包

  GeoPackage    mGeoPackage = new GeoPackage(Environment.getExternalStorageDirectory()+ File.separator + "newGeoPackage.gpkg");

        mGeoPackage.loadAsync();
        mGeoPackage.addDoneLoadingListener(() -> {
            if (mGeoPackage.getLoadStatus() == LoadStatus.FAILED_TO_LOAD) {
                String error = "Geopackage failed to load: " + mGeoPackage.getLoadError();
                Log.e(TAG, error);
                Toast.makeText(this, error, Toast.LENGTH_LONG).show();
                return;
            }

            // 添加栅格
            for (GeoPackageRaster geoPackageRaster : mGeoPackage.getGeoPackageRasters()) {
                RasterLayer rasterLayer = new RasterLayer(geoPackageRaster);
                mMapView.getMap().getOperationalLayers().add(rasterLayer);
            }
            //添加矢量
            for (GeoPackageFeatureTable geoPackageFeatureTable : mGeoPackage.getGeoPackageFeatureTables()) {
                FeatureLayer featureLayer = new FeatureLayer(geoPackageFeatureTable);
                mMapView.getMap().getOperationalLayers().add(featureLayer);
            }
        });

三维模式

注意三维模式下:

  • 很多模拟器不支持,尽量真机
  • 设置OpenGL ES版本3.0
<uses-feature
        android:glEsVersion="0x00030000"
        android:required="true" />

xml

 <com.esri.arcgisruntime.mapping.view.SceneView
        android:id="@+id/sceneView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.esri.arcgisruntime.mapping.view.SceneView>

java

 SceneView sceneView=findViewById(R.id.sceneView);
        ArcGISScene scene = new ArcGISScene(BasemapStyle.ARCGIS_IMAGERY);
        sceneView.setScene(scene);
        ArcGISTiledElevationSource elevationSource = new ArcGISTiledElevationSource(
                "http://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer");
        scene.getBaseSurface().getElevationSources().add(elevationSource);
        

        // 初始位置
        Camera camera = new Camera(28.4, 83.9, 10010.0, 10.0, 80.0, 0.0);
        sceneView.setViewpointCamera(camera);

示例

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:47:45  更:2022-04-22 18:51:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 22:47:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码