SuperAPI AI 工具集

arcgis-editing-advanced

编程与开发

查看项目

更新于 10-16 05:39

技能介绍

用途

本技能面向 ArcGIS Maps SDK for JavaScript 的高级编辑能力,适用于需要复杂数据录入工作流的场景,例如子类型区分、定制表单、多用户并发编辑与版本管理等。资料明确指出:基础编辑应使用 arcgis-editor 组件,本技能覆盖的是需要 Core API 的进阶配置。

主要能力

可配置编辑器(Editor)

可通过 Core API 创建 Editor 并加入视图:import Editor from "@arcgis/core/widgets/Editor.js";,配置 view、layerInfos,并设置 addEnabled、updateEnabled、deleteEnabled 控制增删改操作。字段层面可使用 fieldConfig 指定 name、label、editable(如设为 false 表示只读)、required、maxLength 等。

要素表单(FeatureForm)

支持独立 FeatureForm:通过 container、layer、formTemplate 初始化,用 form.feature = graphic 绑定要编辑的要素,监听 submit 事件并在 form.valid 时调用 getValues() 取值、applyEdits() 提交。表单模板支持 type: "group" 分组元素,将字段归入不同分组(如基本信息、维护信息)。可见性可用 visibilityExpression 配合 expressionInfos 控制,例如 "$feature.type == 'complex'"。

子类型(Subtypes)

加载图层后可读取 layer.subtypeField 与 layer.subtypes,遍历获取 code、name、defaultValues。也可使用 SubtypeGroupLayer,加载后遍历 sublayers 获取 subtypeCode 与 title,每个子图层可配置不同渲染器与弹窗。Editor 支持传入 subtypeGroupLayer,并自动处理子类型。

版本管理(Versioning)

分支版本允许在协调(reconcile)之前多个用户同时编辑同一数据而不冲突。通过 VersionManagementService 可读取 defaultVersionName、supportsVersioning;getVersionInfos() 获取版本列表(版本名、所有者、描述、访问级别 public/protected/private、父版本、创建与修改时间)。可创建版本(versionName、description、access、parentVersionName)、删除版本、修改版本(描述、访问级别、所有权转移)。图层可通过构造参数或随后设置 gdbVersion 切换版本并 refresh(),也可遍历 map.layers 统一切换。编辑会话通过 startReading / startEditing 启动,stopEditing 结束并选择 saveEdits。协调与提交使用 reconcile(abortIfConflicts、conflictDetection 可选 byAttribute/byObject、conflictResolution 可选 favorEditVersion/favorTargetVersion、withPost)与 post。getVersionDifferences 可对比版本差异(inserts、updates、deletes),支持 fromMoment 为 commonAncestor 或 now。锁管理提供 getLockInfo、acquireLock(shared/exclusive)、releaseLock。对公共设施网络可调用 validateNetworkTopology 校验拓扑(validationType 可选 normal/rebuild)。文档给出一个完整的版本编辑工作流函数示例:创建版本、切换图层、启动会话、应用编辑、协调、提交、停止编辑,并在 finally 中切回默认版本并删除临时版本。

关联记录与附件

queryRelatedFeatures 可按 relationshipId 与 objectIds 查询关联要素;Editor 的 layerInfos 可加入 relatedTableInfos 并开启关联表的增删改。附件方面可通过 attachmentsOnCreateEnabled、attachmentsOnUpdateEnabled 开启,或用 queryAttachments、addAttachment、deleteAttachments 编程处理。

校验与 TypeScript

FeatureForm 字段支持 validationExpression,表达式需返回 true/false 或包含 valid 与 errorMessage 的对象;提交前检查 form.valid。TypeScript 下表单元素因使用 autocasting,建议用 as const 保证类型安全。

完整示例

文档提供一个 HTML 页面示例:加载样式与脚本、引入 Map、MapView、FeatureLayer、Editor,创建图层与视图,配置带分组表单和附件开关的 Editor,并加入视图右上角。

适用场景

需要子类型区分的资产录入、需要定制分组表单与字段校验的数据采集、多用户分支版本协同编辑、以及需要附件的要素编辑场景。是否提供产品收费、价格、平台支持与具体效果,资料中暂未提供。

限制与注意事项

资料列出的常见问题包括:用户必须对图层拥有编辑权限;子类型字段必须与服务端配置一致;分支版本在编辑会话期间可能被锁定;校验表达式必须返回 true/false 或错误对象;关联记录需要服务端正确配置关系。