【原文链接:http://www.cnblogs.com/gis-luq/p/5858048.html 】
1、前言
1.1、环境准备:
- ArcGIS for Desktop 10.4.1(10.2.1以上版本即可)
- ArcGIS for Server 10.4.1 (10.2.1以上版本即可)
- PostgreSQL、Microsoft SQL Server、或 Oracle 设置企业级地理数据库。
1.2、发布具有同步能力的FeatureService服务
过程参考 数据制作篇:发布具有同步能力的FeatureService服务 一文。
转载请注明出处:http://www.cnblogs.com/gis-luq/p/5858048.html
2、demo实现过程
ArcGIS Runtime SDK 配置实现过程略:具体请参考:
基于Android Studio构建ArcGIS Android开发环境
基于Android Studio构建ArcGIS Android开发环境(离线部署)
2.1、Demo UI实现
activity_main.xml
1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
2.2、在Android清单文件AndroidManifest.xml中增加网络及存储访问权限
1 | <uses-permission android:name="android.permission.INTERNET" /> |
2.3、实现离线地理数据库下载逻辑
基本思路:
- 设置.geodatabase文件存储路径
- 根据FeatureService服务获取FeatureServiceInfo服务参数信息
- 根据FeatureServiceInfo信息创建离线地理数据库文件、
- 从已经下载的本地Geodatabase文件中加载矢量数据
下载数据的核心功能类说明:
GeodatabaseSyncTask类,实现下载同步功能
GenerateGeodatabaseParameters,下载数据时所需的参数对象,该类构造函数一共有7个根据需要选择:
本次示例代码主要用到以下三个参数:
- featureServerInfo 服务参数信息
- geodatabaseExtent 地图下载区域范围
- geodatabaseSpatialReference 地图空间参考
CallbackListener
,完成GDB数据库下载的回调函数类,在该回调中我们只可以执行一些操作,如示例里在回调中删除了在线的服务图层,加载离线的数据图层到地图上进行显示。通过Geodatabase本地数据库可以获取要素图层列表List<GdbFeatureTable>对象,通过newFeatureLayer(gdbFeatureTable)来创建一个离线要素图层进行要素显示。 - GeodatabaseStatusCallback,本地数据库回调状态类,在数据下载过程中会有很多状态改变,各种状态改变时都会走这个类的回调函数。
- GeodatabaseTask.generateGeodatabase,通过该方法生成离线数据库和相应的要素表,方法需要传递上面介绍的三个参数和一个数据库存储的路径。
完整代码示例:
1 | package com.example.downgdb; |
3、Demo运行结果
源代码托管地址:http://git.oschina.net/gis-luq/RuntimeOfflineEdit
4、参考资料
http://blog.csdn.net/arcgis_all/article/details/20442663
相关内容列表
《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载
《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据编辑
《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步
《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:发布具有同步能力的FeatureService服务
文章若无特殊说明均为原创,原创作品,允许转载,转载时请务必以超链接形式标明文章出处、作者信息和本声明。
博客:http://www.cnblogs.com/gis-luq 作者:gis-luq 邮箱:luqiang.gis@foxmail.com