放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2?
4.2全线基础学习请点击【直达】
4.3及更高版本的补充学习请关注我的博客。
ArcGIS API for JavaScript 4.2概述
AJS 4.2,即ArcGIS API for JavaScript 4.2,是美国ESRI公司针对WebGIS市场推出的、利用JavaScript和Dojo开发的一款产品,它在2016年12月发布。而AJS 4.0 beta则在一年前就发布了。
关于AJS3和AJS4选择的问题,现在可能AJS4还不够3某些方面厉害,尤其是Analysis部分等,这肯定的ESRI未来几年要巩固的方向。毫无疑问。如果急在眉梢需要开发一款2D数据处理很强的WebGIS应用,那么我还是推荐用AJS 3.19,毕竟已经很成熟了,AJS3的文档也满天飞。如果要适应未来5年的潮流,我建议还是从AJS4学起,假如没学过AJS3的话。
学了AJS3也无所谓,AJS4有很多亮点的。
所谓初生牛犊不怕虎,啃就是了。
但凡有一定面向对象开发能力的地理信息系统相关的人都可以迅速上手AJS,这是我的感受。这篇blog是我读第一个AJS程序到现在为止写的,过去了不到10天,除去中间没看的时间静用时3天。所以,AJS不算很难。ps:我有C#+ArcObjects的基础,能独立完成一个Winform ArcEngine小项目。
AJS 4新特性
AJS4.X(下文简称AJS4)是16年正式发布的产品,其新特性是:
1. 3D支持
这是在3.x版本(下文简称AJS3)里没有的,支持构建3D地图和3D场景了。有关更多3D内容可以查询官方的发布日志。
2. 简化API
把AJS3中不规范的类名规范化了,并简化了一批类名,重分类了一些类所在模块,更易用。详情见官方网站中AJS3-AJS4变化表。
3. 直接使用属性
像C#的属性一样,可以直接用“.”运算符调用属性进行取值、赋值,而不用再调setProperty()、getProperty()这种不简洁的写法。
4. 对事件监听有变化
在AJS4中已经不再通过propertyname-change事件监听属性变化,现在只需要使用.watch(property, callback)方法来监听特定的属性更改。当属性发生变化时,回调函数将会接一系列参数,包括,受新值、旧值、属性名、监听对象。
5. 数据和视图分开
在AJS3中,Map和Layer对象要处理绘制地图,但是在AJS4中被单独剥离出来称为View对象了(2D为MapView,3D为SceneView)
View.map属性可以引用Map对象,一个Map对象可以被多个View引用。
6. 仅支持AMD模式
AMD,不是超微半导体那个AMD,是异步模块定义的意思。由于AJS 4采用了Dojo框架和ECMAScript6(即最新规范的JavaScript)实现,AJS就得以支持开发大型Web平台。
具体这个东西是什么,各位看官还请移步比我更强的博客中查阅【Asynchronous Module Definition】
7. Promise
异步操作的福音,then()方法简直就是多层回调的救命稻草——夸张了点。不过Promise作为2015年ECMAScript新标准中的一个,能马上被AJS采用,确实不错,紧跟潮流。
有些地理处理任务是在服务器端异步完成的,甚至异步内的回调函数还可能是异步的,多层异步的回调函数可不太好写。官方就以buffer为例说明了then()的好处。
有些类继承了Promise类,而有的属性就是Promise类型的,有大量的方法返回值类型也是Promise类型的。
AJS 4.2新特性
1. 支持自定义widget
官方给出的例子中,就可以利用前端框架React和AngularJS创建第三方widget。
2. 更多widget
LayerList和Print,即图层列表和打印小部件提供了!
3. 升级矢量瓦片图层并提供支持
4. MapView和SceneView提供了更多的事件兹磁。
5. 激光雷达点云数据的支持
6. 高程查询API
7. 允许自定义goTo()方法
AJS 4.3以及更高版本未来将支持的特性
数据编辑(Editing)
绘图工具(Draw and EditTools)
支持更多的图层类型:GeoRSSLayer, KMLLayer, WMSLayer 和 WMTSLayer
支持更多的着色器(Renderer)
支持更多的小部件:BasemapGallery, Directions, FeatureTable, OverviewMap, analysis widgets etc.(卧槽最后两个要爆炸快点出啊)
支持图例控件
编辑WebMap(Writing WebMap)
其他的不太好翻译,就直接复制粘贴了:Temporal awareness: rendering and filtering/GeoEnrichment/Extensions for Operations dashboard/DataReviewer tasks
————
更为细致一些的内容:
我摘抄一些觉得重要的,其余直接参考官方的对比表吧。
graphicsUtils、栅格影像的空间参考、获取Popups的标题和内容、更多鼠标键盘事件、启用/禁用导航、修改Graphics、FeatureLayer的选择功能/编辑功能/查询附件、BookmarkItem小部件、Bookmarks小部件、ColorPiker小部件、高程滑块小部件、LayerSwipe小部件、测距小部件、透明小部件、比例尺小部件、符号选择器小部件、时间滑块小部件等。
AJS 4 产品升级时间线
按照ESRI的习惯,3~4个月发布一次新版本的话,2017年能看到AJS 4.3和4.4的发布,一个是在3月,一个是在7月(AJS4.3和AJS4.4时间官方已经给出)。
//2017.03.06已发布4.3
而AJS3则会在2017年停止更新,但是仍然会提供CDN支持直到AJS4完全替代它。AJS3估计还有1-2个版本更新了,更新的内容也不是很起眼,所以完全算是一款成熟的API,剩下的只是小修小补。
看下图便知:
(图截取自2016年1月的文件)
图中的表格可以看出,AJS1和AJS2已经退休了,AJS3仍然在提供支持,AJS4是2016年3月发布的测试版。
AJS3将于2年后退休,而AJS4将于3年多后退休。
AJS3将在2017年1月进入成熟运行阶段。
AJS4将于2018年5月进入成熟运行阶段,截至写这篇博客时,还有大概一年多点时间看着AJS4的成长。
为什么AJS3和AJS4只差1年就退休了呢?而发布时间却差了整整4年。我猜,AJS4只是ESRI对3D的一次试水,关键还是与ArcGIS Pro的结合,以及为AJS5做准备。WebGIS已经是ESRI的重心所在,它怎么可能不发力于此呢?尤其是3D这块、大数据这块、云计算这块。
我的AJS 4.2学习笔记目录
方便查阅,点击就跳转。
ArcGIS API for JavaScript 4.2学习笔记[0] ★AJS4.2概述、新特性、未来产品线计划与AJS笔记目录
ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图
ArcGIS API for JavaScript 4.2学习笔记[2] 显示3D地图
ArcGIS API for JavaScript 4.2学习笔记[3] ★官方第二章Mapping and Views概览与解释
ArcGIS API for JavaScript 4.2学习笔记[4] 第二章其余感兴趣的例子
ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译
ArcGIS API for JavaScript 4.2学习笔记[6] goTo()地图动画
ArcGIS API for JavaScript 4.2学习笔记[7] 鹰眼(缩略图)
ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
ArcGIS API for JavaScript 4.2学习笔记[9] 同一种视图不同数据(Map)同步
ArcGIS API for JavaScript 4.2学习笔记[10] 2D添加指北针widget、视图保存、视图padding(第二章完结)
ArcGIS API for JavaScript 4.2学习笔记[11] ★官方第五章Popups(弹窗)概览与解释
ArcGIS API for JavaScript 4.2学习笔记[12] View的弹窗(Popup)
ArcGIS API for JavaScript 4.2学习笔记[13] Layer的弹窗(PopupTemplate)
ArcGIS API for JavaScript 4.2学习笔记[14] 弹窗的位置、为弹窗添加元素
ArcGIS API for JavaScript 4.2学习笔记[15] 弹窗内容的格式与自定义格式
ArcGIS API for JavaScript 4.2学习笔记[16] 弹窗自定义功能按钮及为要素自定义按钮(第五章完结)
ArcGIS API for JavaScript 4.2学习笔记[17] ★官方第七章Searching(空间查询)概览与解释
ArcGIS API for JavaScript 4.2学习笔记[18] 搜索小部件
ArcGIS API for JavaScript 4.2学习笔记[19] 搜索小部件——使用更多数据源
ArcGIS API for JavaScript 4.2学习笔记[20] 使用缓冲区结合Query对象进行地震点查询【重温异步操作思想】
ArcGIS API for JavaScript 4.2学习笔记[21] 对3D场景上的3D要素进行点击查询【Query类学习】
ArcGIS API for JavaScript 4.2学习笔记[22] 使用【QueryTask类】进行空间查询
ArcGIS API for JavaScript 4.2学习笔记[23] 没有地图如何进行查询?【FindTask类的使用】
ArcGIS API for JavaScript 4.2学习笔记[24] IdentifyTask类的使用(第七章完结)
ArcGIS API for JavaScript 4.2学习笔记[25] ★官方第八章Analysis(空间查询)概览与解释
ArcGIS API for JavaScript 4.2学习笔记[26] 缓冲区分析【基于geometryEngine类】
ArcGIS API for JavaScript 4.2学习笔记[27] 网络分析之最短路径分析【使用RouteTask类】
ArcGIS API for JavaScript 4.2学习笔记[28] 可视域分析【使用Geoprocessor】
ArcGIS API for JavaScript 4.2学习笔记[29] 热点(密度)分析——以报警频率为例【使用Geoprocessor】
ArcGIS API for JavaScript 4.2学习笔记[30] 点和线高程查询(第八章完结)
ArcGIS API for JavaScript 4.2学习笔记[31] (补充学习)Task类
ArcGIS API for JavaScript 4.2学习笔记[32] ★(补充学习)Graphic章概述
ArcGIS API for JavaScript 4.2学习笔记[33] ★(补充学习)Layer章概述
ArcGIS API for JavaScript 4.2学习笔记[34] (补充学习)弹窗章节再思考
ArcGIS API for JavaScript 4.2学习笔记[35] (补充学习)其他杂七杂八
ArcGIS API for JavaScript 4.2学习笔记[36] AJS4.x更高版本新特性后续学习目录
ArcGIS API for JavaScript 4.2学习笔记[37] AJS类图(使用XMind制作)
—————— 以下为姐妹篇——————
ArcGIS API for JavaScript 4.3 与 ArcGIS Server 联动使用【地图服务】 对Server的各种服务在AJS中的使用,请查看这篇的末尾。
ArcGIS API for JavaScript 4.3 与 3.20 新特性【2017.03.06】
使用ArcGIS for Server 10.4 发布NAServer 顺带介绍了AJS中三个网络分析Task