Vue 项目引入ArcGIS API for JavaScript,并创建一张地图 (学不会揍我)

本文详细介绍了如何在Vue项目中通过ArcGIS API for JavaScript的两种引入方式:AMD模块托管和ES模块npm安装。对比了两种方法的优劣,并演示了解决样式问题的过程。适合开发者根据项目需求选择合适的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.(阅读arcgis官网)理解arcgis api安装与设置,不愿意看的同学直接看第二步干货讲解
   官网链接:Install and set up | Overview | ArcGIS API for JavaScript 4.21 | ArcGIS Developer

2. (干货) ArcGIS API for JavaScript 引入Vue项目的两种方式(推荐第二种)

   方法一:使用托管版本,通过ArcGIS CDN 引入 AMD 模块,这也是访问 API 的最常见方法。

<link rel="stylesheet" href="https://js.arcgis.com/4.21/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.21/"></script>

   将以上两行代码复制,粘贴至vue项目中public 文件目录下的index.html页面中

 如下图方式放置即可

然后创建一个地图页面,try 一 try吧

页面效果,如下:

方法二: 使用 NPM 的 ES 模块,API 也可通过JavaScript 包管理器npm作为 ES 模块使用。

  进入项目目录,打开命令行

   
  安装 @arcgis/core,如下图:

   
  指令输入敲回车,等待安装完成即可:

 
  出现如下图效果,即为安装完成

 新建一个地图页面,按需引入相应的方法


页面效果:


聪明的朋友会发现,两种方法构造出来的地图不一样,而且第二种很明显会出现一些样式问题


不要着急,既然是样式不对,那么知道是样式原因即可解决,上代码


引入样式后,刷新页面,效果如下:

 3.  那么关于以上AMD、ES方法都可以实现,那么如何知道自己应该结合项目使用哪一个方法呢?这两个方法有什么区别呢?小朋友你是否有很多问号?有问号,看比较



<think>好的,我现在需要帮助用户在Vue项目中集成ArcGIS API for JavaScript来显示要素图层,提供一个完整的示例代码。首先,我需要回忆相关的步骤和引用内容。 根据用户提供的引用,特别是引用[3]提到,从ArcGIS API v4.18开始,可以使用@arcgis/core模块通过ES模块构建,而无需esri-loader。因此,我应该优先推荐这种方法。需要安装@arcgis/core包,Vue组件中引入必要的模块,如Map、MapView、FeatureLayer等。同时,需要引入CSS样式以确保组件正确渲染。 接下来,我需要确保代码结构符合Vue的单文件组件结构,包括模板、脚本和样式部分。在模板中,应该有一个div元素作为地图的容器,设置ref以便在组件中访问。在脚本部分,需要导入所需的ArcGIS模块,在mounted生命周期钩子中初始化地图和视图,添加要素图层。此外,需要注意在组件销毁时销毁MapView实例以避免内存泄漏。 用户可能还需要配置API密钥,如引用[3]中提到的使用esriConfig.apiKey。因此,在示例代码中应该包含如何设置API密钥的部分,提示用户替换为自己的密钥。 另外,引用[4]指出官网知识的重要性,但可能不需要覆盖全部内容。因此,示例代码应保持简洁,专注于要素图层的显示,同时提供必要的注释说明关键步骤。 最后,需要验证代码的LaTeX格式是否符合要求,行内公式用$...$,独立公式用$$...$$,但根据用户的问题,可能此处不需要数公式,但需确保其他格式正确。同时,生成相关问题,帮助用户进一步习。</think>以下是在Vue 3项目中集成ArcGIS API for JavaScript显示要素图层的完整实现步骤和示例代码: ### 一、环境准备 1. 创建Vue项目: ```bash npm create vue@latest ``` 2. 安装ArcGIS核心包: ```bash npm install @arcgis/core --save ``` ### 二、完整示例代码 ```vue <template> <div class="map-container" ref="mapContainer"></div> </template> <script setup> import { ref, onMounted, onBeforeUnmount } from 'vue'; import Map from '@arcgis/core/Map'; import MapView from '@arcgis/core/views/MapView'; import FeatureLayer from '@arcgis/core/layers/FeatureLayer'; import esriConfig from '@arcgis/core/config'; // 配置API密钥(需申请自己的密钥) esriConfig.apiKey = "YOUR_API_KEY"; const mapContainer = ref(null); let view = null; onMounted(() => { // 创建要素图层 const featureLayer = new FeatureLayer({ url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Landscape_Trees/FeatureServer/0", outFields: ["*"], popupTemplate: { title: "树信息", content: [ { type: "fields", fieldInfos: [ { fieldName: "COMMON_NAM", label: "名称" }, { fieldName: "SCIENTIFIC", label: "名" } ] } ] } }); // 初始化地图 const map = new Map({ basemap: "arcgis-topographic", layers: [featureLayer] }); // 创建地图视图 view = new MapView({ container: mapContainer.value, map: map, center: [-118.805, 34.027], // 经纬度坐标 zoom: 13 }); }); onBeforeUnmount(() => { if (view) { view.destroy(); } }); </script> <style> @import "https://js.arcgis.com/4.25/@arcgis/core/assets/esri/themes/light/main.css"; .map-container { width: 100%; height: 600px; margin: 0; padding: 0; } </style> ``` ### 三、关键配置说明 1. **API密钥**:需到[ArcGIS开发者平台](https://developers.arcgis.com/)申请免费密钥[^3] 2. **要素图层URL**:示例使用公开的树木数据服务,可替换为自定义服务地址 3. **弹窗配置**:通过`popupTemplate`定义要素点击弹窗内容[^1] 4. **视图销毁**:必须在组件卸载时销毁视图避免内存泄漏 ### 四、运行验证 1. 启动开发服务器: ```bash npm run dev ``` 2. 访问`http://localhost:5173`应看到包含要素图层的地图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

New_Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值