放着好好的成熟的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

ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录的更多相关文章

  1. ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图

    ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. ...

  2. ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译

    内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View, ...

  3. ArcGIS API for JavaScript 4.3学习笔记[新] AJS4.3和AJS3.20新特性

    今天"ArcGIS极客说"公众号推送了这两个大版本的更新,吓得我赶紧撸了一篇新博客. 这里就不写代码验证了,作为新特性小节简单介绍一下!~ AJS 4.3 1. 更强大的Featu ...

  4. ArcGIS API for JavaScript 4.2学习笔记[16] 弹窗自定义功能按钮及为要素自定义按钮(第五章完结)

    这节对Popups这一章的最后两个例子进行介绍和解析. 第一个[Popup Actions]介绍了弹窗中如何自定义工具按钮(名为actions),以PopupTemplate+FeatureLayer ...

  5. ArcGIS API for JavaScript 4.2学习笔记[30] 点和线高程查询(第八章完结)

    终于到最后一篇了,可喜可贺. 本例先说明了如何进行单点的高程差分析,然后说明了道路的起伏分析.前者很直观地比较了两个年份的高程数据之间的差值,体现山区的高程变化(有啥用啊?)后者,一条路上的起点终点起 ...

  6. ArcGIS API for JavaScript 4.4学习笔记[新] AJS4.4和AJS3.21新特性

    ESRI官网悄无声息突然更新4.4和3.21,公众号也没有什么消息.照例,给大家看看这次更新有什么新特性吧. 1. AJS 4.4 官方更新日志:点我,比较详细.我在这里抽一些主干作为说明. 1.1 ...

  7. ArcGIS API for JavaScript 4.2学习笔记[21] 对3D场景上的3D要素进行点击查询【Query类学习】

    有人问我怎么这个系列没有写自己做的东西呢? 大哥大姐,这是"学习笔记"啊!当然主要以解读和笔记为主咯. 也有人找我要实例代码(不是示例),我表示AJS尚未成熟,现在数据编辑功能才简 ...

  8. ArcGIS API for JavaScript 4.2学习笔记[7] 鹰眼(缩略图的实现及异步处理、Promise、回调函数、监听的笔记)

    文前说明:关于style就是页面的css暂时不做评论,因为官方给的例子的样式实在太简单了,照抄阅读即可. 这篇文章有着大量AJS 4.x版本添加的内容,如监听watch.Promise对象.回调函数. ...

  9. ArcGIS API for JavaScript 4.2学习笔记[19] 搜索小部件——使用更多数据源

    上一篇中提到,空间搜索小部件是Search这个类的实例化,作为视图的ui属性添加进去后,视图就会出现搜索框了. 这节的主体代码和上篇几乎一致,区别就在上篇提及的sources属性. 先看看结果: 由于 ...

随机推荐

  1. 《Java并发编程》之线程中断与终止线程运行

    Java中启动一个线程很容易,通常情况下我们都是等到任务运行结束后让线程自行停止.但有时需要在任务正在运行时取消他们,使得线程快速结束.对此Java并没有提供任何机制.但是我们可以通过Java提供的线 ...

  2. 2712:细菌繁殖-poj

    2712:细菌繁殖 总时间限制:  1000ms 内存限制:  65536kB 描述 一种细菌的繁殖速度是每天成倍增长.例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,… ...

  3. 【转】Swig 使用指南

    原文链接:https://www.cnblogs.com/elementstorm/p/3142644.html 如何使用 API swig.init({ allowErrors: false, au ...

  4. Carbondata源码系列(二)文件格式详解

    在上一章当中,写了文件的生成过程.这一章主要讲解文件格式(V3版本)的具体细节. 1.字典文件格式详解 字典文件的作用是在存储的时候将字符串等类型转换为int类型,好处主要有两点: 1.减少存储占用空 ...

  5. [Docker基础]Docker安装教程

    Install Docker Docker支持几乎所有的Linux发行版,也支持Mac和Windows. 各操作系统的安装方法可参考Docker官网. 安装环境 ubuntu 16.04 Docker ...

  6. C++几个技巧:智能指针在消息传递中的使用,元组,及lambda删除器

    1.SendMessage/PostMessage中传递对象参数 (1)方法1:使用shared_ptr 发送端: PostMessage(MyhWnd, CWM_SOME_ERROR, 0, rei ...

  7. mac mono Fiddler.exe启动失败

    mono version 5.4 fiddler version 4.6 启动fiddler:mono Fiddler.exe 启动报错 WARNING: The Carbon driver has ...

  8. JAVA IO分析二:字节数组流、基本数据&对象类型的数据流、打印流

    上一节,我们分析了常见的节点流(FileInputStream/FileOutputStream  FileReader/FileWrite)和常见的处理流(BufferedInputStream/B ...

  9. applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.

    我用的jeesite框架,在使用定时任务时,出现一些问题,,1.在windows上项目可以在tomcat下,运行2.在linux下项目在tomcatgh下,却出现问题: 15-Dec-2017 15: ...

  10. WebSocket解析

    WebSocket解析 转载请注明出处:WebSocket解析 现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是指在特定的时间间隔(如每一秒),由浏览器对服务器发起HTTP请求,然后由服务器 ...