来源:
https://www.bilibili.com/video/BV1Mf4y1D7Eb

ArcGIS APl for JavaScript是什么?
用来构建2D和3D地图应用的一套简单、易用的API,具备强大制图能力和基于数据驱动的地图可视化能力,用来构建WebGIS系统。

特性:三维支持更加完善,BIM支持进一步加强
特性:三维与GP服务结合,解决三维世界更多实际问题。
特性:根据用户需求和发展趋势,不断增加和更新功能
特性:数据驱动的可视化,让数据变得更加直观和美观

升级指南

属性:

○例如:
○在3.x中,设置要素图层的definitionExpression看起来类似于:
.myFeatureLayer.setDefinitionExpression(expression);
○在4.0中设置要素图层的definitionExpression,使用如下形式:
.myFeatureLayer.definitionExpression = expression;
o在4.0之前,可以通过调用get MethodName或set MethodName来获取
(读取)或设置(写入)一些属性。由于4.xAPl支持获取和设置所有属性,因此不再需要这些类型的方法。

监听属性变化

在4.0之前,属性更改是通过事件处理的。在4.x中,监听属性变化变得更加容易。4.x版本通过.watch(property,callback)方法处理。每次属性更改时都会调用回调,并允许您获取属性的新值,旧值和名称以及监听对象。
·例如:
每次地图底图的标题发生变化时,都会触发回调。
ArcGIS API For Javascript(针对版本4.x)

Views

一、在4.x中,地图可以以2D或3D形式显示。因此,绘图逻辑进行了
修订,Map和Layers不再处理绘图逻辑,而是由Views处理。
二、Views是4.x版本中引入的概念。Views可以是以下两种类型之一:
MapView,适用于2D;
SceneView,适用于3D工作;
三、Views专门用于可视化地图或场景中的数据。地图包含要显示的实际数据或图层,而Views负责显示这些数据。这些数据的可视化或显示方式取决于您是使用2D还是3D。
四、Views具有对地图的引用,例如view.map。但是地图没有对Views的引用。重要的是,多个Views可以使用同一个地图。

ArcGIS API For Javascript(针对版本4.x)

Autocasting:

Autocasting用于将JavaScript对象转换为ArcGlS APl for JavaScript类类型,而无需使用require()加载这些类。
下面使用示例说明使用Autocasting编程的不同。
ArcGIS API For Javascript(针对版本4.x)
Autocasting:
ArcGlS APl for JavaScript将获取传递给构造函数中属性的值,并在内部实例化类型化对象。
ArcGIS API For Javascript(针对版本4.x)

Promise

01*
Promise在ArCGIS API for JavaScript中发挥着重要作用。使用promises
可以在处理异步操作时编写更清晰的代码。
02*
Promise通常用于then()。这是一个强大的方法,它定义了在解析promise时调用的回调函数,以及在promise被拒绝时调用的错误函数。第一个参数始终是成功回调,第二个可选参数是错误回调。
03*
使用Promises的一个好处是利用then()将多个Promise链接在一起。回调函数必须使用return关键字将解析值返回到下一个Promise。

someAsyncFunction().then(callback,errorCallback);
ArcGIS API For Javascript(针对版本4.x)

重要的API

Map

Map对象仅仅是个容器,存储了baselayers和operational layers包含的地理相关信息。
Map对象包含一系列属性和方法来存储、管理和叠加图层到2D和3D场景中。
ArcGIS API For Javascript(针对版本4.x)

View

View为Map对象提供的一种渲染和交互的方式;
View是MapView和SceneView的基类,本身没有构造函数,只能通过MapView或者SceneView来创建实例。
ArcGIS API For Javascript(针对版本4.x)

View和Map的关系

ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)
实例:GraphicsLayer用于加载图形(点击弹出事件)
ArcGIS API For Javascript(针对版本4.x)
实例:
ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)
StreamLayer
流图层:针对实时传过来的一些数据,动态的在地图上展示。

Geomtry

ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)

地图事件

View对象允许用户对地图组件进行交互,例如当用户点击地图时,事件是与指向地图的view或者指向图层的layerView进行处理,事件不直接通过map或者layer来处理。
ArcGIS API For Javascript(针对版本4.x)

核心API剖析

Layers 图层,相当于画板
Renderers 渲染器
Widgets 提供一些微件,如图例、书签、测量、比例尺、图层控制
Geometry&Symbols 几何&符号化,颜料,画成什么样子,轮廓
Tasks 与后台进行交互

TiledLayer
MaplmageLayer
lmageryLayer
GraphicsLayer
VectorTileLayer
web TileLayer
WMTSLayer
GeoRSSLayer
sLayer
streamLayer
ArcGIS API For Javascript(针对版本4.x)
用于查询,可视化,分析数据的图层
ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)
用于提供地理背景的图层(用作地图)
ArcGIS API For Javascript(针对版本4.x)
核心图层类型
ArcGIS API For Javascript(针对版本4.x)
加载示例
ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)
Tips:
WebStyleSymbol:arcgis api提供在线的地图渲染符号。2D和3D都有。里面包含一些模型。

Renderers

ArcGIS API For Javascript(针对版本4.x)
例如制作热力图。

ArcGIS API For Javascript(针对版本4.x)

Renderers示例
ArcGIS API For Javascript(针对版本4.x)

QueryTask

查询一个地图服务中的单个图层
可进行属性查询、几何查询或二都同时查询。
ArcGIS API For Javascript(针对版本4.x)
实例:
ArcGIS API For Javascript(针对版本4.x)

FindTask

查询同一个地图服务的多个图层。
仅能查询属性信息。
ArcGIS API For Javascript(针对版本4.x)
实例:
ArcGIS API For Javascript(针对版本4.x)

ldentifyTask

查询一个地图服务中的多个图层
只可进行空间查询。
ArcGIS API For Javascript(针对版本4.x)

LayerViewQuery

ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)

GeometryService/GeometryEngine

·对要素进行缓冲区、裁剪、相交、量测、简化、叠加、联合、旋转、投影、标注等操作。
· GeometryService通过服务器端来完成操作,GeometryEngine在客户端完成。
.GeometryService的特定能力更强大,GeometryEngine使用更方便。
ArcGIS API For Javascript(针对版本4.x)
GeometryEngin
ArcGIS API For Javascript(针对版本4.x)
GeometryService
ArcGIS API For Javascript(针对版本4.x)
一般的话使用GeometryEngin,需要用到特定的功能时用GeometryService,日常开发过程中用到GeometryService的概率不大。

ArcGIS API For JavaScript新进展

3D+BIM

全新的
BuildingSceneLayer过滤
新的filter属性支持在BIM图层中自定义任何的过滤规则,
例如:根据楼层
在最新的版本中,这一特性更进一步扩展了2种不同的过滤模式,以得到更好的可视化效果
ArcGIS API For Javascript(针对版本4.x)
BIM文件很大,对某一楼层的某一类展示的话,分楼层展示,以获得更好的可视化效果。

全新的即拿即用微件

新的即拿即用的微件,支持更多的三维分析
3D视线分析
日照分析
地图卷帘
底图列表
测量
比例尺滑竿
ArcGIS API For Javascript(针对版本4.x)

更加通用的UI微件

重新设计的滑竿Slider
由于在多个场景下的需求,滑竿微件被
单独抽取成为可以直接使用的通用微件,
并且其他的多个类似的微件都在底层改
为了引用该新的微件来实现,包括:
oTimeSlider
o HistogramRangeSlider(直方图)
ArcGIS API For Javascript(针对版本4.x)

完善的三维编辑能力

Editor
全新设计的3D Editor工作流,现在可以借助于Sketch微件提供的交互性绘制能力来编辑3D要素的geometry,visualVariable。同时,这些改变能实时反映到Feature,Popup等等微件中去。
Attachment
新的微件支持在应用中直接浏览和编辑要素关联的附件
ArcGIS API For Javascript(针对版本4.x)

图形渲染引擎革新

VectorTile并行请求、切片算法的优化,切片缓存、渐进式渲染,更少的函数调用,带来丝滑的体验

Feature-三角网格技术的引入,性能得到大幅度的提升,增强的z-index算法,海量线,面要素的渲染支持

Lines-重新设计的JS函数,大大的简化的线要素的运算量,也极大地减少了绘制线元素时的顶点数量

Polygon-新的多边形网格化技术,GPU的性能得到显著提高快速实时渲染–API底层进一步优化了快速渲染相关的执行流,从而让矢量切片等图层得以实现更流畅的动画渲染

3D - API底层升级到了新的i3s 1.7版本,增强的加载策略,使得3D相关的渲染性能得到显著提高,3D Object使用了新的多边形网格化技术

Smart Mapping- 4.x的API目前已经彻底的覆盖了3.x所有的功能,而且新增了更多3.x没有的特性。新的SizeVariable允许定义一个跟scale相关的可视化量,当处于大比例尺下时,能更好的展示海量要素的符号

前端工程化与现代化

①API现在在所有的异步函数中默认使用原生Promise,移除了对dojo/Deferer的依赖

②esri/request底层改为浏览器原生的fetch实现、当浏览器不支持该实现时,例如IE11,将会自动引入polyfill

③一个全新设计的AbortSignal,允许在大多数的异步调用中传递,从而让用户更容易取消一个异步的过程

④现在允许像dojoConfig一样,通过全局定义对象的方式来定义esriConfig

⑤新的Intl国际化支持

融入现代的前端开发

ArcGIS API For Javascript(针对版本4.x)
Tips:
esri-loader:实现如何Vue.js、React前端的技术和ArcGIS API For Javascript结合起来。是两者之间的桥梁和纽带。(在github上搜)

内置渲染器

内置模型符号—WebStyleSymbol
ArcGIS API For Javascript(针对版本4.x)
实例:二维的点,用WebStyleSymbol渲染点,构造出来一三维的场景。
ArcGIS API For Javascript(针对版本4.x)
ArcGIS API For Javascript(针对版本4.x)
如果有自己的符号,可通过arcgis pro发布到Portal,通过WebStyleSymbol方式调用。

三维模型添加及编辑

支持两种方式添加本地模型文件,Three.js和原生glTF方式。
ArcGIS API For Javascript(针对版本4.x)

学习资源

开发者网站
https://developers.arcgis.com/javascript/index.html
Esri/esri-loader
https://github.com/Esri/esri-loader
Esri/resource-proxy
https://github.com/Esri/resource-proxy/releases
ArcGIS REST API
https://developers.arcgis.com/rest/
ArcGIS通用数据类型
https://developers.arcgis.com/documentation/common-data-types/overview-of-common-data-types.htm

相关文章: