ArcGIS for Android离线数据编辑实现原理

    ArcGIS for Android中现已经提供了离线缓存图片的加载功能,极大的提高了我们访问地图的效率,对于离线的数据编辑暂时还不支持,而现在对于离线数据编辑操作的需求越来越多,那我们如何才能实现离线数据编辑功能呢?下面我们介绍一下,通过sqlite来实现离线数据编辑的解决方案。

    一、离线数据编辑解决方案

    离线编辑无非就是将所需的数据下载到我们的手持端进行存储,当无法连接网络时,数据的读取、显示、编辑、保存都是通过本地数据库完成的;而后,当可以连接网络时,再将编辑的数据从手持端的数据库中提取出来进行在线数据提交。

    二、离线数据编辑实现步骤

    根据上面的流程图我们来分析一下,实现离线数据编辑的步骤:

    1、 通过ArcGIS Server来发布一个FeatureService服务用于数据下载或上传;

    2、 手持端编写通过服务请求业务数据的代码;

    在手持端编写下载数据的代码,通过FeatureService服务进行数据的下载,代码如下:

Query query = new Query();

query.setOutFields(new String[] { "*" });                 query.setInSpatialReference(featureLayer.getSpatialReference());

query.setWhere("objectid in ("+where+")");

flayer.selectFeatures(query, ArcGISFeatureLayer.SELECTION_METHOD.NEW,new CallbackListener<FeatureSet>() {                      

                    publicvoid onError(Throwable e) {

                                }

                    publicvoid onCallback(FeatureSet queryResults) {                

                    }

                  });

 

    3、 在手持端创建数据库和业务数据表;

    在手持端中,我们需要数据库来存储业务数据,因此我们需要创建Sqlite数据库和相应的业务表。

在创建数据库时,我们可以通过扩展Android的帮助类SQLiteOpenHelper来维护和操作数据库和表,创建的表要与我们下载的业务数据的表结构一致。

public class DatabaseHelper extends SQLiteOpenHelper {

   public static final String SYSTEM_TABLE = "sqlite_master";

   private static final int VERSION=1;

   public static final String TABLEORFIELDS =  "tableOrfields";          

   public static final String TABLENAME = "Environment";        

   public DatabaseHelper(Context context, String name, CursorFactory factory,

                           int version) {

               super(context, name, factory, version);

               // TODO Auto-generated constructor stub

   }         

   public DatabaseHelper(Context context, String name){

               this( context,  name,VERSION);

   }

   public DatabaseHelper(Context context, String name,int version){

               this(context,name,null,version);

   }

   @Override

   public void onCreate(SQLiteDatabase db) {

               //创建的表结构

               String sql = "CREATE TABLE IF NOT EXISTS  "+TABLENAME+"(OBJECTID INTEGER,CODE INTEGER,省名 TEXT,县区

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值