ArcGIS Visualization 是一个用于 ArcGIS Maps SDK for JavaScript 的技能,主要用于在样式化图层时处理渲染器、符号、视觉变量、标注和效果。
用途 当需要为地理数据配置可视化样式时使用该技能,包括专题地图、热力图、分级设色(class breaks)、唯一值分类(unique values)、标注等。
主要能力
- 渲染器类型:提供 SimpleRenderer、UniqueValueRenderer、ClassBreaksRenderer、HeatmapRenderer、DotDensityRenderer、PieChartRenderer、DictionaryRenderer、FlowRenderer。不同渲染器对应不同用例,例如 SimpleRenderer 所有要素使用同一符号,UniqueValueRenderer 按类别使用不同符号,ClassBreaksRenderer 按数值区间使用不同符号,HeatmapRenderer 用于密度可视化(仅点),DotDensityRenderer 用于点密度图(仅多边形),PieChartRenderer 为每个要素绘制饼图,DictionaryRenderer 用于军事符号(MIL-STD-2525),FlowRenderer 用于动画流向线(影像)。
- 2D 符号类型:SimpleMarkerSymbol(点)、SimpleLineSymbol(线)、SimpleFillSymbol(面)、PictureMarkerSymbol(图片标记)、TextSymbol(文本)。
- 3D 符号类型:PointSymbol3D(图标标记、对象标记)、WebStyleSymbol(来自图库的 3D 图标)、MeshSymbol3D(用于 SceneLayer)、LineSymbol3D、PolygonSymbol3D。
- 视觉变量:ColorVariable、SizeVariable、OpacityVariable、RotationVariable,可基于字段映射颜色、大小、不透明度和旋转。
- 标注:通过 labelingInfo 配置文本符号、标注位置、Arcade 表达式、SQL 过滤条件、比例尺范围等。点支持 above-center、below-center、center-center、above-left 等;线支持 above-along、below-along、center-along;面使用 always-horizontal。
- 还涉及自动转换(autocasting):符号和渲染器对象支持使用带 type 属性的普通对象,而无需构造类实例;TypeScript 中可使用 as const 或 satisfies。当需要实例方法时,使用显式类。
使用方式 可通过直接 ESM 导入,例如从 "@arcgis/core/renderers/SimpleRenderer.js" 等路径导入;也可通过 CDN 动态导入,使用 $arcgis.import 加载模块。示例代码使用自动转换(带 type 的普通对象);CDN 用法中将 import X from "path" 替换为 const X = await $arcgis.import("path")。渲染器可通过 layer.renderer 赋值。标注通过 layer.labelingInfo 配置并设置 layer.labelsVisible = true。
适用场景 适合需要在 ArcGIS Maps SDK for JavaScript 中自定义地理数据可视化的开发场景,包括专题制图、数值分级展示、类别区分、密度热力图、点密度图、多变量饼图、2D/3D 符号化以及基于 Arcade 表达式的标注。相关技能还包括 arcgis-cim-symbols(高级制图符号)、arcgis-smart-mapping(数据驱动的自动渲染器)、arcgis-feature-effects(视觉效果与滤镜)、arcgis-core-maps(地图与视图设置)、arcgis-layers(图层类型与配置)。
限制 视觉变量需要使用数值字段,若对字符串字段使用 size 或 color 将不会产生变化。渲染器和符号在自动转换时必须包含 type 属性,否则自动转换会静默失败,要素将使用默认符号渲染。标注表达式使用 Arcade 语法($feature.fieldName),而非 JavaScript。3D 符号(PointSymbol3D、LineSymbol3D、PolygonSymbol3D)只能在 SceneView 中使用,不能在 MapView 中使用。颜色支持 hex、命名颜色、RGB 数组或 RGBA 数组。关于收费、价格、平台等信息暂未提供。