作者:dongyx

使用iMobile for Android如何实现对接iserver发布数据服务呢?在支持过程中经常遇到客户会问我发了数据服务能不能直接在地图显示或者我能不能直接对iserver发布的数据服务进行查询呢?今天小编就为大家介绍一下使用iMobile产品如何对接iserver发布的数据服务和地图服务,本篇文章主要从数据服务的上传、下载和更新。
一、数据服务
1.如何下载数据服务
要想下载数据服务首先得准备一个数据源,可以直接使用代码在手机端创建一个文件型数据源或者在iDesktop中创建数据源(目前支持UDB类型)拷贝到手机端打开。具体实现代码如下:

final ProgressDialog progress = new ProgressDialog(MainActivity.this);String mUrl="http://172.16.14.191:8090/iserver";String mUrlDatasets ="http://172.16.14.191:8090/iserver/services/data-supermap/rest/data/datasources/orcl/datasets/";String datasetName = "New_Point";String urlServer  = mUrl;String urlDataset = mUrlDatasets + datasetName;//构造DataDownloadService对象DataDownloadService downloadService = new DataDownloadService(urlServer);downloadService.setResponseCallback(new ResponseCallback(){@Override//响应回调函数,向服务器请求失败时回调public void requestFailed(String errorMsg) {Log.e("Download", errorMsg);progress.dismiss();Toast toast = Toast.makeText(MainActivity.this, "下载失败", Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);toast.show();}@Override//响应回调函数,向服务器请求成功时回调public void requestSuccess() {Log.i("Download", "requestSuccess");}@Overridepublic void addFeatureSuccess(int i) {}@Overridepublic void receiveResponse(FeatureSet featureSet) {}@Override//响应回调函数,数据服务结束时调用public void dataServiceFinished(String arg0) {Toast toast = Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);toast.show();progress.dismiss();m_MapControl.getMap().refresh();}});//显示下载服务执行的进度条,回调里面销毁progress.setMessage("下载中...");progress.show();//执行下载操作Datasource m_datasource = m_Workspace.getDatasources().get(0);downloadService.downloadDataset(urlDataset, m_datasource);

2.服务器更新数据后,iMobile如何更新下载的数据

当我们将iserver的数据下载到本地后,iserver端数据进行了更改,可以通过更新数据的方式将iserver的变动更新到本地数据集中,需要注意的是进行更新操作时iserver和本地都存在该名称的数据集以及其对应的同步属性数据集:

final ProgressDialog progress = new ProgressDialog(MainActivity.this);String mUrl="http://172.16.14.191:8090/iserver";String mUrlDatasets ="http://172.16.14.191:8090/iserver/services/data-supermap/rest/data/datasources/orcl/datasets/";String datasetName = "New_Point";String urlServer  = mUrl;String urlDataset = mUrlDatasets + datasetName;//构造DataDownloadService对象DataDownloadService downloadService = new DataDownloadService(urlServer);downloadService.setResponseCallback(new ResponseCallback(){@Override//响应回调函数,向服务器请求失败时回调public void requestFailed(String errorMsg) {Log.e("Update: ", errorMsg);progress.dismiss();Toast toast = Toast.makeText(MainActivity.this, "更新失败", Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);toast.show();}@Override//响应回调函数,向服务器请求成功时回调public void requestSuccess() {System.out.println("更新完成");}@Overridepublic void addFeatureSuccess(int i) {}@Overridepublic void receiveResponse(FeatureSet featureSet) {}@Override//响应回调函数,数据服务结束时调用public void dataServiceFinished(String arg0) {Toast toast = Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);toast.show();progress.dismiss();m_MapControl.getMap().refresh();}});//显示更新服务执行的进度条,回调里面销毁progress.setMessage("更新中...");progress.show();//执行更新操作Datasource m_datasource = m_Workspace.getDatasources().get(0);downloadService.updateDataset(urlDataset, (DatasetVector)m_datasource.getDatasets().get(datasetName));

3.向iserver端提交数据
按照业务需要完成本地数据的修改后,即可将修改后的数据提交到服务端。提交数据时需注意两点:1)提交时要求服务器端和本地都存在该数据集及对应的同步属性数据集。2)提交时本地数据集的版本不得高于服务端版本(即本地的Max[SmUserID]不大于服务器上的Max[SMID])。

 final ProgressDialog progress = new ProgressDialog(MainActivity.this);//调用第三步中的方法,修改数据//modifiedDataset(2);Datasource m_datasource = m_Workspace.getDatasources().get(0);String datasetName = "New_Point";DatasetVector dataset = (DatasetVector)m_datasource.getDatasets().get(datasetName);String mUrl="http://172.16.14.191:8090/iserver";String mUrlDatasets ="http://172.16.14.191:8090/iserver/services/data-supermap/rest/data/datasources/orcl/datasets/";String urlServer  = mUrl;String urlDataset = mUrlDatasets + datasetName;//构造DataUploadService对象DataUploadService uploadService = new DataUploadService(urlServer);uploadService.setResponseCallback(new ResponseCallback(){@Override//响应回调函数,向服务器请求失败时回调public void requestFailed(String errorMsg) {Log.e("commit: ", errorMsg);progress.dismiss();Toast toast = Toast.makeText(MainActivity.this, "提交失败", Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);toast.show();}@Override//响应回调函数,向服务器请求成功时回调public void requestSuccess() {Log.i("Commit", "requestSuccess");}@Overridepublic void addFeatureSuccess(int i) {}@Overridepublic void receiveResponse(FeatureSet featureSet) {}@Override//响应回调函数,数据服务结束时调用public void dataServiceFinished(String arg0) {Toast toast = Toast.makeText(MainActivity.this, "提交成功", Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL, 0, 0);toast.show();progress.dismiss();m_MapControl.getMap().refresh();}});//显示提交服务执行的进度条,回调里面销毁progress.setMessage("提交中...");progress.show();//执行提交操作uploadService.commitDataset(urlDataset, dataset);

iMobile for Android如何对接iserver发布的数据服务相关推荐

  1. 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(本人原创)

    如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要.可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS ...

  2. Mars3D(含Cesium)数据及服务篇:发布三维数据服务

    通过数据处理的流程我们大概了解了目前三维相关的影像.地形.模型都是瓦片形式的静态资源文件,如果我们需要发布为服务,只需要通过HTTP方式发布后,平台即可调用. #1. Nginx软件安装 如果您服务器 ...

  3. GeoServer发布PostGIS数据服务(地图工具篇.13)

    听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 关联博客(postgis的数据服务来源): 12.(地图工具篇)PostgreSQL+PostGIS实现两坐标点之间最短路径查询 ...

  4. SueperMap iMobile for android中在线数据对接大全

    作者:xinxin 在SuperMap产品中,数据源可以分为文件型数据源.数据库型数据源和在线数据源,SuperMap iMobile for Android可以对接文件型数据源和在线数据源,文件型数 ...

  5. SuperMap iMobile for Android常见问题解答集锦(十四)

    问:SuperMap iMobile for Android中导出shp数据时能否设置其字符集,怎么设置? 答:导出时可以设置shp的字符集,通过类DataConversion下的setConvert ...

  6. SuperMap iMobile for Android常见问题解答集锦(十三)

    作者:皇皇 问:SuperMap iMobile for Android中是否支持实时GPS定位,怎么实现? 答:可以支持:通过LocationManagePlugin管理插件类,开启GPS设备,并设 ...

  7. 多种方式发布WebGIS地图服务以及显示

    目录 一.WebGIS基础 1. 什么是WebGIS?(WebGIS的介绍.技术.架构.功能/应用.产品) 2. OGC规范 3. 主流WebGIS架构 4. 主流GIS服务器 4.1 ArcGIS ...

  8. 利用GeoServer发布地理空间数据服务示例

    题记-- 今天睡了午觉起来头昏脑涨,喉咙还不舒服,我一定是受凉了.啊~ 决定摘(脱)抄(密)节(处)选(理)一篇以前写的技术文档,滥竽充数. 这篇仅介绍地理空间数据服务的基础知识,以及如何在Windo ...

  9. 零基础根据Mars3D开发教程发布三维数据

    首先搭建开发环境 步骤如下: 1.点击Mars3D开发教程,进入页面,查看页面展示,进入开发工具清单如图所示.   .Mars3D介绍 | Mars3D开发教程 2.点击"下载"进 ...

最新文章

  1. Android TextView textAppearance
  2. 工业相机和镜头说明与图像采集
  3. 字符设备驱动代码完整分析
  4. mybatis mysql crud_Mybatis实现CRUD操作
  5. C++继承中的对象模型
  6. 管理系统界面设计python_python图形化界面设计(wxpython)一布局管理
  7. OpenCV示例学习(七):离散傅里变换(DFT)算子:getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize()
  8. sql2008能否打开mysql数据库_mysql数据库数据能不能导入到sql server中
  9. java file.length 单位_Java.io.File.length()返回0
  10. 2018 年大疆机器学习算法工程师春季提前批笔试题
  11. MAML论文阅读笔记--回归实验
  12. 围棋人机大战属于计算机在什么方面的应用,人民日报评围棋人机大战:胜出的是我们自己...
  13. Wireshark抓包体验
  14. python中常见的错误提示_python常见异常提示
  15. 上海亚商投顾:沪指高开低走 钠离子电池、储能概念崛起
  16. 如何理解对数似然损失函数
  17. 数据库中的 【行式存储】和【列式存储】
  18. 渗透测试类型(白盒测试、黑盒测试)和漏洞扫描器
  19. Python-Flask开发微电影网站(九)
  20. 微软Windows8“消失”了的宣传壁纸

热门文章

  1. 三生三世之 数据挖掘
  2. 其实 MySQL 中的 like 关键字也能用索引
  3. 准备蓝桥杯--dyx--回文数
  4. 15 | 深入解析Pod对象(二):使用进阶 笔记
  5. Striving for Simplicity: The All Convolutional Net
  6. 【图像分割】视觉大模型SEEM(Segment Everything Everywhere All at Once)原理解读
  7. html中margin居中样式,利用margin属性将一个div水平居中将
  8. tr AB = tr BA的证明
  9. Codec2Client::createComponent过程分析
  10. mybatis-mate相关配置