ArcGIS JsAPI 4.15 发布日志
发布时间 北京时间 2020年4月10日
ArcGIS API for JavaScript 4.15 发布日志
1. FeatureLayer的3d编辑功能
现在在3d模式下支持点线面要素的编辑了。使用Editor小部件来编辑FeatureLayer。
尽管Sketch工具以及支持地表要素的编辑,但是新的Z方向感知编辑工具可以修改地上或者地下的图形。投影到地形和场景中的物体上的辅助线能帮助编辑者进行对齐捕捉。
当你使用3D点转换工具(3D点转换工具)交互式地旋转或者缩放3D符号时,要素的属性会通过视觉变量配置(VisualVariable)自动更新。现有的小部件例如FeatureForm、FeatureTemplates已经集成了3D符号。
2. FeatureTable小部件(测试版本)
FeatureTable小部件(FeatureTable)提供要素属性的交互式编辑功能,该小部件可快速地加载较大的数据集。
用户可选择表中的行(也就是要素),然后根据某些属性列进行排序,或者显示、隐藏某些属性列。
因为这个小部件还是测试版本,限制性的功能见最新版API文档。
这个小部件既可以独立运行,也可以与某个地图图层联动运行。
3. 查看和编辑附件
3.1. 查看附件
4.15版本的API引入了一个新的附件小部件(Attachments),允许查看与要素有关的附件,例如图片等。除了附件的缩略图(如果附件是图片)外,还能看到附件的格式、大小。现在,这个小部件取代了原有的附件显示方式(即4.15版本之前的附件显示都是在弹出窗中)。因此,附件查看功能被剥离出来,可以安排集成到别的逻辑中去。
3.2. 编辑附件
编辑小部件(Editor)已经更新以支持附件编辑。现在可以增删改要素关联的附件了。前提是,FeatureService支持编辑。
4. BuildingSceneLayer筛选模式
通过BuildingSceneLayer中的新筛选模式,可以突出显示BIM模型中的要素,同时仍显示建筑物的其他部分。
筛选掉的其他BIM模型构件可以用X光模式渲染,也可以用线框显示。
这个是示例代码:点我
5. 在IntegratedMesh图层之上叠加显示要素
API现在将场景中的IntegratedMeshLayer视为地形。这意味着,你现在可以使用on-the-ground
模式将多边形直接贴地(把矢量图形直接绘制在Mesh表面)。点或者线符号如果设置了relative-to-ground
作为它们的高程模式,它们就会以IntegratedMeshLayer为基础高程,相对拔高。
详情见示例代码:点我
6. 网格(Mesh)材质
现在使用Mesh创建的自定义三维模型可以用MeshMaterialMetallicRoughness这种材质了,支持镜面曲率。现在可以直接在材料上或通过纹理贴图调整金属和粗糙度因子。
关于这种材料,可以看看这个例子:点我
7. 点聚类功能的更新
添加了对点层中包含Arcade表达式的渲染器进行聚类的支持。
8. API更新
8.1. esriConfig现在是全局变量
只需在全局条件声明esriConfig变量即可。
<script> var esriConfig = { portalUrl: "https://myHostName.esri.com/arcgis" }; </script>
8.2. 返回原生Promise
从4.15开始,返回ES6原生的Promise对象。所以,老代码需要全部改了。ESRI计划在4.16中的Dojo定义的Promise。(译者注:释放信号——去Dojo化)。
ES6的Promise和Dojo的Promise大致相同,区别如下:
使用ES6的catch()代替otherwise()
使用AbortController.abort()方法替代cancel()
使用以下代码替代always:
.catch(function(error){ /* 出错时的代码 */ }).then(function() { /* 不管怎么用都要执行的代码 */ });
干掉了isFulfilled()/isResolved()/isRejected()方法。
对于Dojo的Promise,当promise状态是resolved或者rejected时,then/catch方法会同步执行。在ES6的promise中,它们是异步执行。
如果不想用ES6的Promise,可以在dojoConfig中的has属性进行配置,但是这个在4.16版本将会废弃:
<script> var dojoConfig = { has: { "esri-native-promise": false } }; </script>
8.3. Dojo声明模块
ESRI正试图渐渐脱离Dojo的模块声明机制。在下一版本中,将完全删除declare
模块。这意味着,在4.15中如果继承了API的类(模块),你的派生类可以继续用,但是在4.16中就不能用了。
现在已经在控制台启用了警告信息。
你可以在官方的next仓库中测试未发布版本的jsapi(传送门)
9. 小部件更新升级
9.1. HTML清理程序更新
在版本4.14中,HTML清理器已添加到所有小部件中,以根据ArcGIS Online支持的HTML规范清理和转义字符串。对于4.15,我们放宽了显示HTML时的一些清理规则,使其比ArcGIS Online支持的HTML规范限制更少。我们还修复了与整理后的HTML内容不显示在PopupTemplate.content
中有关的错误(请参见下文)。
9.2. DatePicker和TimePicker小部件
添加了两个新的小部件,以帮助支持选择日期和时间。添加了DatePicker和TimePicker小部件,以在输入日期和/或时间信息时提供轻松的UI体验。
9.3. Print小部件更新
现在,Print小部件的界面会根据打印的地图是自动下载还是在新窗口中打开显示不同的图标。
有关更多信息,请参见fileName
和title
属性。开发人员还可以定义在UI中对用户可用的格式和打印布局。这些属性也可以通过PrintViewModel
设置。
9.4. Editor小部件更新
9.4.1. 支持编辑附件
Editor
现在内置了编辑附件的功能。如果管理的要素图层支持附件,那么增删改功能将会被提供。无需进行其他任何配置即可允许编辑附件,Editor
小部件将遵循在关联的服务上设置的任何访问权限。
9.4.2. 工作流更新
有两个新的Workflow类:CreateWorkflow
和UpdateWorkflow
。这两个类分别用于添加新功能或编辑现有功能。功能保持不变,只是现在被分为各自的类。除了这两个类之外,还有一些新类可以处理工作流数据:CreateWorkflowData
和UpdateWorkflowData
。此外,现在在Edits
类中引用了Workflow编辑。
9.5. Popup更新
9.5.1 Popup的附件
现在,Popup
使用Attachments
小部件处理附件。与以前的版本相似,有一个AttachmentsContent
类,可以将其配置为显示与某个要素关联的任何附件。区别在于Attachments
小部件存储了过去可以通过AttachmentsContent
访问的AttachmentInfo
。
9.5.2. 显示隐藏可见的元素
可以打开/关闭Popup
上的可见元素。通过其visibleElements
属性进行控制,该属性同时包含closeButton
和featureNavigation
属性。应该使用featureNavigation
属性而不是已弃用的featureNavigationEnabled
属性。
9.5.3. 设置actions的数量
可以通过其maxInlineActions
属性设置在Popup
中显示的最大actions数量。
9.5.4. 更新了图表轴的值和文本位置
如果在Popup
中使用图表的media element
时没有负值,则y轴现在从零开始。此外,图表的media element
的标题和图表标题现在显示在图表上方。
10. MapImageLayer增强
MapImageLayer及其Sublayer类经过重构和现代化。针对动态图层,地图的可视化显著地对智能地图制图的改进,并修复了一些图层可见性错误。弹出行为的几个问题已修复,例如在使用编码的域值时能够显示描述。
我们通过Sublayer.load()来加载子图层的元数据,用MapImageLayer.loadAll()来加载全部子图层。当加载完所有的子突出后你可以访问如下属性和方法:
- fields & fieldsIndex
- fullExtent
- objectIdField & typeIdField
- sourceJSON
- getFeatureType() & getFieldDomain()
renderer和labelingInfo也一样。
11. 影像图层更新
开发人员现在可以使用TileImageryLayer
在2D地图中利用客户端处理和渲染瓦片影像服务的优势。
12. StreamLayer更新
开发人员现在可以在SceneView
中利用客户端查询(client-query)和过滤(filtering)StreamLayer。2D的StreamLayerView也支持客户端效果。
13. PictureMarkerSymbol更新
现在在MapView支持gif
和png
图片了。
14. 统计查询更新
percentile-continuous
和percentile-discrete
添加到statisticType
中了。百分位统计量表示该值高于或低于该值时,一组数据中给定值的百分比下降。
15. 登录界面更新
访问安全验证的服务和用户验证时,登录界面更新了,不再使用Dojo的Dijit对话框来实现。
16. 突破性改进
- 使用ES6原生Promise
- dgrid样式不再包含在全局。如果在Web应用程序中使用dgrid,则需要单独引用样式表。
- 删除了
ImageMeshColor
,从4.11版开始不推荐使用。改为在MeshMaterial.colorTexture
上设置MeshTexture
。 - 删除了
requireUtils
,该版本自4.10版本起不推荐使用。请改用promiseUtils.create()
。 - 删除了
ValueMeshColor
,从4.11版开始不推荐使用。请改用MeshMaterial.color
。 - 从
StreamLayer
中删除了capabilities
和version
属性。 Sketch
小部件和SketchViewModel
上的更新事件不再具有取消状态。在update
事件中abort
的参数指示该进程已取消。attachmentInfos
属性已从AttachmentsContent
中删除。现在可以通过Attachments
小部件来处理它,并且可以通过其viewModel
对其进行访问。- 现在,
Workflow.data
属性将返回CreateWorkflow
或UpdateWorkflow
引用。 - 现在,
Editor
小部件和EditorViewModel
的activeWorkflow
属性将返回对CreateWorkflow
或UpdateWorkflow
的引用。 - 现在在
Edits
类中引用了Workflow
编辑。
17. 修复了BUG增强了功能
略
18. 添加了类、属性、方法、事件
略
19. 废弃的类、属性、方法、事件
略
20. 包更新
从4.15开始,ArcGIS Arcade升级到1.9;Dojo使用1.14.2(4.11到现在都是这个版本);dgrid使用1.2.1(从4.5开始用到现在);dstore使用1.1.2(从4.5开始用到现在)。
从4.12版本开始,使用Dojo5的@dojo/framework的5.0.4版本。