放着好好的成熟的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. 向maven中添加本地jar包

    <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java& ...

  2. Mysql语句查询优化

    其实对Mysql查询语句进行优化是一件非常有必要的事情. 如何查看当前sql语句的执行效率呢? 1.建一张学生表 CREATE TABLE `student` ( `stu_id` ) NOT NUL ...

  3. PHP启动:动态库加载失败(PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/*.so')

    今天在linux上面智障一般搞了好久,本来想安装个swoole的,然后用  php -m 的命令想看下安装的PHP扩展库,发现有的扩展库有的可以出来,有的加载失败, 加载失败的错误类型: PHP Wa ...

  4. Windos系统git提交

    一.$ git status   //查看当前项目下所有文的状态,如果第一次,你会发现都红颜色的,因为它还没有交给git/github管理. 二.$ git add .   //(.)点表示当前目录下 ...

  5. CCF-201509-2-日期计算

    问题描述 试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年 ...

  6. Jdk8的学习之lambda

    在JDK8中,引入了Lambda(读:了母达)表达式的概念,这是我最喜欢的特性,很多东西都变得简单了,一行代码可以搞定. 比如说排序 /** * 这是一个JDK8的lambda的排序应用 */ pub ...

  7. 大数加法之C语言函数法(只有正数版)

         由于某些原因,我于今天2017-4-19将我的博文搬到博客园了,以后我就在这里扎根了.         之前想过在博客写文章方便日后复习,但一直未能实现,所以,现在这篇是我个人人生中第一篇博 ...

  8. lua游戏开发实践指南学习笔记1

    本文是依据lua游戏开发实践指南做的一些学习笔记,仅用于继续自己学习的一些知识. Lua基础 1.  语言定义: 在lua语言中,标识符有非常大的灵活性(变量和函数名),只是用户不呢个以数字作为起始符 ...

  9. 设计模式(8) - 迭代器模式(iterator)- 实现ArrayList和linkedList的迭代器

    上周六就開始写这篇博客,之后一直耽误了.到前天才開始写.今天醒的早,就把这部分整理一下. 本文内容參考易学设计模式和马士兵的迭代器模式的视频. 了解迭代器模式一个作用就是让你在使用 迭代器遍历集合类的 ...

  10. JAVA8之lambda表达式具体解释,及stream中的lambda使用

    前言: 本人也是学习lambda不久,可能有些地方描写叙述有误,还请大家谅解及指正! lambda表达式具体解释 一.问题 1.什么是lambda表达式? 2.lambda表达式用来干什么的? 3.l ...