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

来源:
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)方法处理。每次属性更改时都会调用回调,并允许您获取属性的新值,旧值和名称以及监听对象。
·例如:
每次地图底图的标题发生变化时,都会触发回调。
在这里插入图片描述

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可以使用同一个地图。

在这里插入图片描述

Autocasting:

Autocasting用于将JavaScript对象转换为ArcGlS APl for JavaScript类类型,而无需使用require()加载这些类。
下面使用示例说明使用Autocasting编程的不同。
在这里插入图片描述
Autocasting:
ArcGlS APl for JavaScript将获取传递给构造函数中属性的值,并在内部实例化类型化对象。
在这里插入图片描述

Promise

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

someAsyncFunction().then(callback,errorCallback);
在这里插入图片描述

重要的API

Map

Map对象仅仅是个容器,存储了baselayers和operational layers包含的地理相关信息。
Map对象包含一系列属性和方法来存储、管理和叠加图层到2D和3D场景中。
在这里插入图片描述

View

View为Map对象提供的一种渲染和交互的方式;
View是MapView和SceneView的基类,本身没有构造函数,只能通过MapView或者SceneView来创建实例。
在这里插入图片描述

View和Map的关系

在这里插入图片描述
在这里插入图片描述
实例:GraphicsLayer用于加载图形(点击弹出事件)
在这里插入图片描述
实例:
在这里插入图片描述
在这里插入图片描述
StreamLayer
流图层:针对实时传过来的一些数据,动态的在地图上展示。

Geomtry

在这里插入图片描述
在这里插入图片描述

地图事件

View对象允许用户对地图组件进行交互,例如当用户点击地图时,事件是与指向地图的view或者指向图层的layerView进行处理,事件不直接通过map或者layer来处理。
在这里插入图片描述

核心API剖析

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

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

Renderers

在这里插入图片描述
例如制作热力图。

在这里插入图片描述

Renderers示例
在这里插入图片描述

QueryTask

查询一个地图服务中的单个图层
可进行属性查询、几何查询或二都同时查询。
在这里插入图片描述
实例:
在这里插入图片描述

FindTask

查询同一个地图服务的多个图层。
仅能查询属性信息。
在这里插入图片描述
实例:
在这里插入图片描述

ldentifyTask

查询一个地图服务中的多个图层
只可进行空间查询。
在这里插入图片描述

LayerViewQuery

在这里插入图片描述
在这里插入图片描述

GeometryService/GeometryEngine

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

ArcGIS API For JavaScript新进展

3D+BIM

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

全新的即拿即用微件

新的即拿即用的微件,支持更多的三维分析
3D视线分析
日照分析
地图卷帘
底图列表
测量
比例尺滑竿
在这里插入图片描述

更加通用的UI微件

重新设计的滑竿Slider
由于在多个场景下的需求,滑竿微件被
单独抽取成为可以直接使用的通用微件,
并且其他的多个类似的微件都在底层改
为了引用该新的微件来实现,包括:
oTimeSlider
o HistogramRangeSlider(直方图)
在这里插入图片描述

完善的三维编辑能力

Editor
全新设计的3D Editor工作流,现在可以借助于Sketch微件提供的交互性绘制能力来编辑3D要素的geometry,visualVariable。同时,这些改变能实时反映到Feature,Popup等等微件中去。
Attachment
新的微件支持在应用中直接浏览和编辑要素关联的附件
在这里插入图片描述

图形渲染引擎革新

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国际化支持

融入现代的前端开发

在这里插入图片描述
Tips:
esri-loader:实现如何Vue.js、React前端的技术和ArcGIS API For Javascript结合起来。是两者之间的桥梁和纽带。(在github上搜)

内置渲染器

内置模型符号—WebStyleSymbol
在这里插入图片描述
实例:二维的点,用WebStyleSymbol渲染点,构造出来一三维的场景。
在这里插入图片描述
在这里插入图片描述
如果有自己的符号,可通过arcgis pro发布到Portal,通过WebStyleSymbol方式调用。

三维模型添加及编辑

支持两种方式添加本地模型文件,Three.js和原生glTF方式。
在这里插入图片描述

学习资源

开发者网站
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

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值