1、前言

今天再一次在官网看到了ArcGIS Runtime SDK for Android下一个版本“Quartz”版的更新资料,它将是一个非常重要的更新,包括API接口的重构和开发思路的调整。具体如下图所示:

ArcGIS Runtime SDK概述一文中已经给大家介绍了ArcGIS Runtime SDK for Android的前世今生,从2011年6月发布ArcGIS Runtime SDK for Android beta版开始,到2015年10月1日发布ArcGIS Runtime SDK for Android 10.2.7 。期间大大小小经历了十几个大小版本的迭代。期间功能不断完善,从一开始API提供的在线地图浏览功能的到后期逐渐加入的离线矢量,离线分析、离在线一体化数据生产流程。功能也越来越丰富。但是不论怎么变化API结构始终没有发生过大的调整。仔细研究现有API的结构时我们也不难发现一些现象,同样功能的类函数会出现在多个包里面,有时候给人有点晕的感觉,例如:com.esri.core.tasks.ags.query 和 com.esri.core.tasks.query 同样是query,但是因为支持的查询同步异步方式的不同,就直接成为了两个类。再比如对于图层类ArcGISFeatureLayer继承于GraphicsLayer支持要素的在线编辑修改,GraphicsLayer继承于基类Layer。FeatureLayer继承于基类Layer支持离线数据源的加载,这些开发的时候都是需要深入了解并理清楚思路的,并且需要特别注意。
从API从开发者的角度来说有没有更简单更高效的一种方式呢,接口更加简单清晰? 我想这也是“Quartz”版目标之一。

“Quartz”版重构API结构使接口更清晰。大的调整即将到来。

转载请注明出处:http://www.cnblogs.com/gis-luq/p/4923469.html

2、现有版本分析

官网地址:https://developers.arcgis.com/android/

ArcGIS Android 10.2.7 API 结构图

类结构是大家多年来所熟悉的样子,但是确实不够清晰明了(对比于新版来说)。

举个简单例子,在10.2.7及之前的版本里。整个地图的容器为MapView,在MapView类可以执行地图的一些基本操作,例如图层管理。放大、缩小、平移、相关事件监听。例如我们要显示一张地图;具体过程如下:

1)、设置应用程序Activity的UI信息

打开res>>layout>>activity_main.xml文件,添加Mapview的UI信息

<com.esri.android.map.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</com.esri.android.map.MapView>

2)   新建MapView并设置UI和代码的绑定

private MapView mapView = null;
private ArcGISTiledMapServiceLayer arcGISTiledMapServiceLayer = null; this.mapView = (MapView)this.findViewById(R.id.map);//设置UI和代码绑定

3)   新建地图图层并添加到MapView中

String strMapUrl="http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";
this.arcGISTiledMapServiceLayer = new ArcGISTiledMapServiceLayer(strMapUrl);
this.mapView.addLayer(arcGISTiledMapServiceLayer);

4)  至此一张简单的地图就添加完成了

更多配置过程可以参考文章 《基于Android Studio构建ArcGIS Android开发环境》

3、未来版本分析

官网地址:https://developers.arcgis.com/android/beta/

ArcGIS Android “Quartz”版 API 结构图

对于“Quartz”版,类名包名首先进行了调整,同时在接口使用上也有一定的改动。首先在“Quartz”版中采用MVC结构进行重构(MVC结构一般包括模型、视图、控制器),增加了一个Map类,Map代表了模型,用于存储地图数据源,一般来说包含一个底图图层及若干业务图层数据。MapView代表了视图,用于直接和用户交互,但是已经不负责对Layer的直接管理和操作了,内容的操作主要通过Map来实现管理,这个在API接口方法中也有体现。对于显示一张底图的过程如下:

1)、设置应用程序Activity的UI信息

打开res>>layout>>activity_main.xml文件,添加Mapview的UI信息

    <com.esri.arcgisruntime.mapping.view.MapView
android:id="@+id/mapViewLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</com.esri.arcgisruntime.mapping.view.MapView>

2)、新建MapView

 private MapView mMapView;

2)、设置MapView资源绑定、及相关图层数据的设置

 //设置MapView UI和代码的绑定
mMapView = (MapView) findViewById(R.id.mapViewLayout);
//利用在线的服务创建一个切片图层
String strMapUrl="http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";
ArcGISTiledLayer tiledLayerBaseMap = new ArcGISTiledLayer(strMapUrl);
//设置切片图层作为底图
Basemap basemap = new Basemap(tiledLayerBaseMap);
//创建一个map包含basemap地图数据
Map map = new Map(basemap);
//设置mao显示的视图MapView中
mMapView.setMap(map);

从上面的代码我们可以看出,结构上已经变成了遵循MVC结构的模式,MapView已经不负责直接对Layer的管理。

4、结语

从量变到质变,新的API已经悄无声息的的开始内测,对于开发者来说免不了又是新的一轮学习和适应。但是更简洁的结构,统一的风格设计,支持二维以及三维的数据显示,这一切还是值得我们期待的。

最后附上2015Esri全球用户大会top10的QA 中关于“Quartz”的说明。

今年在用户大会,用户交流以及Developer Showcase Island上你将会听到团队提出“Quartz”,它是ArcGIS Runtime SDK下一个大版本的代号。这一版本包括了一系列显著的功能增强,正式版本预期于2016年第一季度发行,之前会有几个beta版本发行,第一个测试版定 于2015年8月发行。
ArcGIS Runtime Quartz版本的新功能,包括:
1) 地图性能改进
2)
支持更多数据格式,矢量数据包括移动地理数据库(Runtime
geodatabase),shapefile文件,KML;栅格图像主要包括JPEG, JPEG2000, NITF, GeoTIFF,
MrSID,CADRG, ECRG, DTED, SRTM,
HRE以及激光雷达。此外,还支持OGC的GeoPackage,以及自定义的矢量和栅格数据源
3) 本地分析在内的更多GIS分析功能
4) 支持智能制图,矢量切片和读写在线地图的功能
5) 支持3D场景,浏览、分析3D数据
6) 支持Xamarin,允许.NET开发人员构建跨平台运行的应用程序。

“ArcGIS发展的重要计划有哪些?长期的路线图是怎样的?”

引用其中一句话 “未来12个月,ArcGIS Web and Runtime SDKs将完全支持3D,允许设备应用建立在Runtime和Web上,充分利用3D工作流和信息产品的优势。” 伴随着“Quartz”版,ArcGIS 移动3D时代即将到来。

《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)的更多相关文章

  1. ArcGIS Runtime SDK for WPF学习笔记(一)

    本节主要讲解如何安装ArcGIS Runtime SDK,以及移除注释与水印. 附上ArcGIS Runtime SDK for .NET的官方操作手册网址:https://developers.ar ...

  2. 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView

    1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预 ...

  3. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...

  4. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述

    1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步

    1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用

    1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境

    1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)

    1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

    1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...

  10. 《ArcGIS Runtime SDK for Android开发笔记》——(11)、ArcGIS Runtime SDK常见空间数据加载

    ArcGIS Runtime SDK for Android 支持多种类型空间数据源.每一种都提供了相应的图层来直接加载,图层Layer是空间数据的载体,其主要继承关系及类型说明如下图所示: 转载请注 ...

随机推荐

  1. DP【洛谷P1704】 寻找最优美做题曲线

    [洛谷P1704] 寻找最优美做题曲线 题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情, ...

  2. 10.15 lzxkj

    几天前写的,忘了放了,在此填坑 10月16的题我出的不写题解了 lzxkj 题目背景 众所不周知的是, 酒店之王 xkj 一个经常迷失自我的人 有一天, 当起床铃再一次打响的时候, TA 用 O(1) ...

  3. PHP删除目录下的空目录

    function rm_empty_dir($path){       if(is_dir($path) && ($handle = opendir($path))!==false){ ...

  4. Jira的安装使用

    1.什么是JIRA JIRA是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一 ...

  5. sharepoint_study_11

    描述:修改管理员密码和账户后,管理中心无法打开.(提示:HTTP Error 503. The service is unavailable.) 解决: 1.打开iis 2.右击“应用程序池”下的”S ...

  6. window.open 设置高和宽无效

    当设置_self属性时,再设置宽和高就不管用,这个宽高会继承父窗口的宽高! window.open("url","_self","width=100, ...

  7. Educational Codeforces Round 11 B

    Description Consider 2n rows of the seats in a bus. n rows of the seats on the left and n rows of th ...

  8. 线段树 区间更新(更新区间[x,y]的值,再求任意区间[x,y]的和)

    #1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...

  9. linux系统延时和定时任务

    系统延时任务延时任务:只做一次的at命令: 系统定时及延时任务 延时任务:**有输出任务**不会输出到终端上而是发送邮件给你/var/mail/root/执行 mail at          时间 ...

  10. 单元测试mock框架——jmockit实战

    JMockit是google code上面的一个java单元测试mock项目,她很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,功能强大.项目地址在:http://jmocki ...