当前位置: 首页 > news >正文

ArcGIS Maps SDK for JavaScript 5.0 组件化开发指南

ArcGIS Maps SDK for JavaScript 5.0 组件化开发指南

    • 前言
    • 一、什么是 ArcGIS Maps SDK Components?
      • 组件分类一览
    • 二、为什么选择 Components?
      • 1. Esri 官方战略方向
      • 2. React 19 完美支持
      • 3. 与传统开发方式对比
    • 三、快速入门
      • 方式一:CDN 引入(推荐用于原型开发)
      • 方式二:NPM 安装(推荐用于生产项目)
    • 四、在 Experience Builder 中使用组件
      • 开发步骤
    • 五、组件的高级用法
      • 1. 多个组件组合使用
      • 2. 响应式状态管理
    • 六、注意事项
      • 1. 版本兼容性
      • 2. 性能优化建议
      • 3. 天地图集成
    • 七、总结

前言

随着 Web 技术的不断发展,ArcGIS Maps SDK for JavaScript 也在持续演进。5.0 版本带来了全新的组件化架构——ArcGIS Maps SDK Components,这是一套基于 Web Components 标准构建的可复用 UI 组件库。本文将详细介绍 ArcGIS JS 5.0 的组件化特性,帮助开发者了解这一全新的开发模式。

📌地图初始化完整示例请参阅姊妹篇:《ArcGIS JS 5.0 Component 地图初始化示例》

一、什么是 ArcGIS Maps SDK Components?

ArcGIS Maps SDK Components 是 ArcGIS 官方推出的一套Web Components组件库,将 ArcGIS 核心功能封装为标准的自定义 HTML 元素。这套组件具有以下核心特性:

特性说明
框架无关性可在任何 JavaScript 框架或原生 HTML 中使用
响应式设计组件内部已经处理好了响应式布局
声明式 API通过 HTML 属性即可配置组件行为
事件驱动支持标准 DOM 事件监听

组件分类一览

类别组件用途
地图与场景<arcgis-map>,<arcgis-scene>显示 2D 地图和 3D 场景
图层与图例<arcgis-layer-list>,<arcgis-legend>管理和展示图层
搜索与定位<arcgis-search>,<arcgis-locate>地理编码和设备定位
底图与导航<arcgis-basemap-gallery>,<arcgis-home>,<arcgis-navigation-toggle>底图切换和导航控制
编辑与绘制<arcgis-sketch>要素绘制和编辑
测量与坐标<arcgis-measurement>,<arcgis-coordinate-conversion>距离面积测量和坐标转换
图表与分析<arcgis-chart>,<arcgis-charts-action-bar>数据可视化

二、为什么选择 Components?

1. Esri 官方战略方向

根据 Esri 官方博客的介绍,Esri 已经全面转向基于标准 Web Components 的开发模式。所有传统的 JavaScript Maps SDK Widget 功能都将被弃用并逐步移除。这意味着组件化开发是未来的主流方向。

2. React 19 完美支持

ArcGIS Experience Builder (版本 1.19+) 已经基于 React 19 构建。React 19 对 Web Components 提供了完整支持

  • ✅ 全面的自定义元素支持
  • ✅ 改进的事件处理机制
  • ✅ 增强的属性管理

3. 与传统开发方式对比

传统方式 (Widget): ┌─────────────────────────────────────────┐ │ require(['esri/widgets/Legend'], ...), │ │ new Legend({ view: mapView }) │ └─────────────────────────────────────────┘ 组件方式 (Component): ┌─────────────────────────────────────────┐ │ <arcgis-legend view={view}></arcgis-legend> │ └─────────────────────────────────────────┘

三、快速入门

方式一:CDN 引入(推荐用于原型开发)

<!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"/><metaname="viewport"content="width=device-width, initial-scale=1"/><title>ArcGIS Components Demo</title><!-- 引入 ArcGIS CSS --><linkrel="stylesheet"href="https://js.arcgis.com/5.0/esri/themes/light/main.css"/><!-- 引入 ArcGIS SDK --><scripttype="module"src="https://js.arcgis.com/5.0/"></script></head><body><arcgis-mapitem-id="05e015c5f0314db9a487a9b46cb37eca"></arcgis-map></body></html>

方式二:NPM 安装(推荐用于生产项目)

npminstall@arcgis/map-components
import"@arcgis/map-components/components/arcgis-map";import"@arcgis/map-components/components/arcgis-legend";import"@arcgis/map-components/components/arcgis-search";

四、在 Experience Builder 中使用组件

ArcGIS Experience Builder 是构建 Web App 的低代码平台,可以直接使用 Map Components 来开发自定义组件。

开发步骤

  1. 创建自定义组件:在 Experience Builder Developer Edition 中创建组件文件夹和文件

  2. 导入组件:在组件的 TypeScript 文件中导入需要的组件

import'@arcgis/map-components/dist/arcgis-map.js';import'@arcgis/map-components/dist/arcgis-search.js';import'@arcgis/map-components/dist/arcgis-legend.js';
  1. 声明式使用:在 React 组件中直接使用 Web Components
constMyWidget=()=>{return(<div><arcgis-map item-id="your-webmap-item-id"></arcgis-map></div>);};
  1. 处理事件:使用标准 DOM 事件监听
useEffect(()=>{constmapElement=document.querySelector('arcgis-map');if(mapElement){mapElement.addEventListener('arcgisViewReadyChange',(event)=>{constview=event.detail.view;console.log('Map view is ready:',view);});}},[]);

五、组件的高级用法

1. 多个组件组合使用

<divstyle={{display:'flex',height:'500px'}}><divstyle={{flex:'1'}}><arcgis-mapid="my-map"item-id="your-webmap-item-id"></arcgis-map></div><divstyle={{width:'250px',padding:'10px'}}><arcgis-legendreference-id="my-map"></arcgis-legend><arcgis-layer-listreference-id="my-map"></arcgis-layer-list></div></div>

2. 响应式状态管理

constEnhancedWidget=()=>{const[mapReady,setMapReady]=useState(false);useEffect(()=>{constmapElement=document.querySelector('arcgis-map');if(mapElement){consthandleViewReady=(event)=>{setMapReady(true);constview=event.detail.view;// 执行额外的视图设置};mapElement.addEventListener('arcgisViewReadyChange',handleViewReady);return()=>{mapElement.removeEventListener('arcgisViewReadyChange',handleViewReady);};}},[]);return(<div><arcgis-map...></arcgis-map>{mapReady&&<arcgis-search...></arcgis-search>}</div>);};

六、注意事项

1. 版本兼容性

  • ArcGIS Maps SDK for JavaScript 5.0+ 提供 Components 支持
  • Experience Builder 需要 1.15+ 版本
  • React 19 提供了最佳的 Web Components 支持体验

2. 性能优化建议

  • 使用componentOnReady()确保组件加载完成后再操作
  • 合理使用await viewOnReady()避免竞态条件
  • 注意组件销毁时清理事件监听器

3. 天地图集成

使用天地图作为底图时,可以利用第三方工具类:

constgetTianditu=await$arcgis.import("https://openlayers.vip/examples/resources/tianditu.js");constvecLayers=getTianditu.default({type:"vec_w"});

七、总结

ArcGIS Maps SDK for JavaScript 5.0 的组件化架构为开发者带来了更现代化、更便捷的开发体验。通过声明式的 HTML 标签,开发者可以快速构建复杂的地图应用,而无需编写大量的 JavaScript 代码。

核心优势总结

  • 🚀开发效率提升:声明式 API,代码更简洁
  • 🔮未来可扩展:符合 Web Components 标准,顺应技术发展趋势
  • 🌍框架无关:可在 React、Vue、Angular 或原生 JS 中使用
  • 📦开箱即用:提供丰富的预构建 UI 组件

建议开发者现在开始尝试使用 Components 进行开发,以获得更好的开发体验和长期的技术支持。


下一篇:《ArcGIS JS 5.0 Component 地图初始化实战》 — 包含完整的 3D 场景组件化开发示例代码及逐行解析。


参考资料

  • Building Future-Proof Custom Widgets for Experience Builder
  • ArcGIS Maps SDK for JavaScript - Map Components
  • Use Map Components in Custom Widget
  • Use Map Components Sample
http://www.jsqmd.com/news/771971/

相关文章:

  • 3步掌握Windhawk工具:彻底改变你的Windows个性化体验
  • 信创UOS,Docker 完整操作部署(Dockerfile部署方式)排错整合
  • WarcraftHelper:让经典魔兽争霸3在现代系统上高效运行的全面优化方案
  • 如何从GoPro视频中提取GPS轨迹:终极实战指南
  • 2026年男孩、女孩、宝宝起名/取名公司深度观察:合规化定制机构解析 - 深度智识库
  • 基于深度学习的YOLO26智慧工业图像识别 车辆缺陷识别 车辆玻璃破损检测 车辆凹陷识别 车辆划痕检测 数据集第10681期
  • 5分钟掌握SVGcode:浏览器内一键实现位图到矢量图的智能转换
  • 2026年4月质量好的硬度计直销厂家推荐,30T液压万能试验机/60吨材料万能试验机,硬度计供应商推荐 - 品牌推荐师
  • Rust 文件IO操作实战:读写文件的艺术
  • 【教学类-160-21】20260503 AI视频培训-练习021“豆包AI视频《春花》+豆包图片风格:复古动漫
  • Tiny C Compiler:极简主义如何重塑C语言编译体验
  • 摩托罗拉Defy卫星链接器:双向卫星通信技术解析
  • 【深度测评】2026 年纯水设备/软化水设备/超纯水处理/反渗透水处理设备厂家:实力企业引领行业绿色升级 - 深度智识库
  • 如何快速创建小米手表个性表盘:Mi-Create可视化设计工具终极指南
  • 三电阻采样电路设计避坑:LM324运放选型、电阻匹配与共模电压那些事儿
  • 无锡可靠的西装定制哪家划算?维纳缇等5大品牌深度解析 - 西装爱好者
  • Vue3 + AntV X6 实战:从零搭建一个可拖拽、可删除的流程图编辑器(附完整源码)
  • 2026年净化水/纯工业水/一体化污水/废水/高盐废水处理设备厂家:技术驱动与全周期服务的标杆企业解析 - 深度智识库
  • 抠图公章怎么制作?2026年最全教程+工具推荐
  • 观察 Taotoken 用量看板如何帮助团队清晰掌握 API 成本分布
  • Anthropic 拿下 Colossus 1 全部算力,Claude 体验提升、覆盖范围或扩大?
  • 基于Node.js与React的ChatGPT克隆项目全栈架构解析与实战部署
  • carconfig_updater.cpp 中的疑问?
  • ESP32 SPI模式读写SD卡,从硬件连接到文件操作完整流程(附代码避坑点)
  • AISMM不是培训,是能力操作系统:奇点大会首发《AISMM实施成熟度评估矩阵》(含6维度22项量化指标)
  • 信得过的厂家!2026广州聚杰芯科交通流量调查系统,全流程严苛品控更安心 - 品牌速递
  • 怎么在 CloudCone VPS 上部署 CDN 加速静态资源访问
  • 4.28阿里云存储软件
  • 【PostgreSQL从零到精通】第36篇:PostgreSQL内存配置与大页内存优化
  • Cursor Free VIP:3步轻松解锁AI编辑器无限使用权限,告别“请求次数已达上限“