《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)...
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.MapViewandroid: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.MapViewandroid: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时代即将到来。
文章若无特殊说明均为原创,原创作品,允许转载,转载时请务必以超链接形式标明文章出处、作者信息和本声明。 博客:http://www.cnblogs.com/gis-luq 作者:gis-luq 邮箱:luqiang.gis@foxmail.com
转载于:https://www.cnblogs.com/telwanggs/p/6434170.html
《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)...相关推荐
- 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView
1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来("Quartz"版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC ...
- ArcGIS Runtime SDK for .NET开发实例教程 之 ArcGIS Runtime开发环境搭建
随着ArcGIS Engine不再进行更新,ArcGIS Runtime得到了Esri公司的推崇,ArcGIS Runtime版本发布到100.4已经有了很大的内容完善和改进,接下来针对ArcGIS ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步...
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据编辑...
1.前言 在上一篇我们已经实现了离线地理数据库的下载,这一篇我们着重介绍离线数据库的加载与编辑. 由于ArcGIS Runtime SDK for Android 10.2.X版本并没提供要素绘制功能 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...
1.前言 1.1.环境准备: ArcGIS for Desktop 10.4.1(10.2.1以上版本即可) ArcGIS for Server 10.4.1 (10.2.1以上版本即可) Postg ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用...
1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...
- 《ArcGIS Runtime SDK for Android开发笔记》
开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>--(1).And ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境...
1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...
最新文章
- window平台下 Eclipse Ndk开发中的Method 'NewStringUTF' could not be resolved问题
- mysql试题百度云_BATJ大厂600多道技术面试题及答案解析
- 如何突破瓶颈又释放工作量? 深度剖析《闪耀暖暖》游戏从2D到3D的美术开发过程
- 信息学奥赛C++语言:等级化的成绩
- matlab 求控制系统积分误差ise,基于MATLAB的自适应飞行控制系统参数整定
- 博客目录 Blog directory
- C C++回调函数和java的回调函数
- 移除Kubeadm部署的kubernetes环境
- abaqus中python怎么建立参考点_怎么在abaqus中选定中心为参考点
- 肠道重要菌属——嗜胆菌属 (Bilophila)喜欢脂肪、耐胆汁的促炎菌
- 从乡巴佬到世界首富,连续7年蝉联全球最大公司:真正厉害的人,都敢于不走寻常路...
- 解决windows虚机系统时间与北京时间相差8小时
- struct2json API 文档,s2j库(c语言与json互转)
- Zephyr Kernel 设备驱动和设备模型(一)
- java 实现 ppt或pptx文件转换PDF文件 -- poi
- UE5 Lumen实现分析
- 如何唤起支付宝支付调用接口
- MySQL 获取所有库名、表名、字段名
- 瓷砖铺贴方法_地砖铺贴方法 地砖铺贴流程
- GitHub 开源跨平台神器 Electron 实践
热门文章
- YARN调度策略比较
- (79)Vivado创建约束的方法
- (27)FPGA面试技能提升篇(UVM、VMM)
- http 访问mysql数据库_04.Http协议之GET请求与访问MySQL数据库
- 02.vs2015编译qt动态库
- iframe 滚动条不显示_HTML基础教程:Iframe的用法
- python算法应用(二)——一些使用技巧
- mysql - 5.5.21_MySQL5.5.21安装配置教程(win7)
- spark 获取广播变量_spark使用广播变量
- 组织c语言程序的是什么,C程序在内存中的组织方式