ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图

目录

  • ArcGIS Maps SDK for JavaScript简介
  • ArcGIS Maps SDK for JavaScript 4.x 的主要特点和功能
  • AMD modules 和 ES modules两种方式比较
  • Vue3中使用ArcGIS Maps SDK for JavaScript的步骤
    • 创建 Vue 3 项目
    • 安装 ArcGIS Maps SDK for JavaScript
    • 创建地图组件

ArcGIS Maps SDK for JavaScript简介

ArcGIS Maps SDK for JavaScript 是由 Esri 公司开发的一款用于构建交互式地图应用程序的 JavaScript 库。它提供了丰富的地图显示、分析和可视化功能,适用于各种场景。
目前,ArcGIS Maps SDK for JavaScript 提供两个主要版本:3.x 和 4.x。

  1. ArcGIS Maps SDK for JavaScript 3.x 版本:
    • 3.x 版本是 ArcGIS Maps SDK for JavaScript 的旧版本,一些老的项目中仍在广泛使用。
    • 它是基于 Dojo 框架构建的,提供了强大的二维地图显示功能,支持多种地图服务、图层、渲染器、符号等。
    • 提供了丰富的地图分析工具和可视化组件,包括缓冲区分析、路径分析、空间查询、热力图等。
    • 3.x 版本已经逐渐被4.x版本取代,官网也逐渐停止了对3.x的维护。
    • 在模块化开发的今天,3.x已经不能适应现在的开发模式,如果没有老的项目进行维护,我们也不需要去使用3.x了,因此,我们这里重点介绍4.x版本
  2. ArcGIS Maps SDK for JavaScript 4.x 版本:
    • 4.x 版本是 ArcGIS Maps SDK for JavaScript 的最新版本,也是未来的主要发展方向。
    • 4.x 版本重新设计了架构,使用现代的 Web 技术,如 ES6、TypeScript,并采用了模块化的开发方式。
    • 它提供了更加灵活和高性能的地图显示功能,支持 2D 和 3D 地图。

ArcGIS Maps SDK for JavaScript 4.x 的主要特点和功能

  1. 地图展示功能:

    • 支持加载各种底图,并具有对地图缩放、平移和旋转的交互操作。
    • 提供丰富的图层类型,包括矢量图层、栅格图层、动态图层等。
    • 支持地图符号化、标注和注记。
  2. 地理空间分析功能:

    • 提供强大的地理处理和分析功能,如缓冲区分析、空间查询、路径分析等。
    • 支持地理要素的可视化和渲染,如热力图、聚类等。
  3. 三维地图功能:

    • 提供创建和展示三维地图的能力,支持倾斜、旋转和缩放三维场景。
    • 支持在三维场景中添加三维模型、地下管网、点云等。
  4. 用户交互和导航功能:

    • 提供默认的地图导航控制器,包括缩放控制、导航按钮和比例尺等。
    • 支持自定义用户交互功能,如地图点击事件、拖放等。
  5. 地图样式与配置:

    • 支持自定义地图样式、符号库和颜色主题。
    • 可以通过配置文件设置地图的默认视图、初始范围和坐标系等。
  6. 地图数据和服务集成:

    • 支持加载各种数据源,包括地理数据格式(如 GeoJSON、KML、Shapefile 等)和服务(如 ArcGIS Server 服务、WMS 服务等)。
    • 支持与 ArcGIS Online 和 ArcGIS Enterprise 进行集成,访问其丰富的地图和数据资源。

AMD modules 和 ES modules两种方式比较

ArcGIS Maps SDK for JavaScript 4.x 提供了两种方式来加载模块:AMD modules 和 ES modules(4.17以后的版本支持),两种加载方式的优缺点如下:

  1. AMD modules(异步模块定义):

    • 优点:AMD 是一种用于加载 JavaScript 模块的异步模块加载机制。它非常适合于在旧版浏览器和遗留系统中使用,可以兼容各种浏览器,并具有强大的跨平台兼容性。
    • 缺点:AMD 的语法相对较复杂,使用起来可能更加繁琐,还需要额外的 AMD 加载器库来加载模块。
  2. ES modules(ECMAScript 模块):

    • 优点:ES 模块是 JavaScript 的官方模块化系统,以简洁、易于使用和静态分析等特点而闻名。它使用标准的 importexport 语法,使代码更清晰、可维护性更高,同时支持 async/await 等现代 JavaScript 功能。
    • 缺点:ES 模块在旧版浏览器中可能不被全面支持,需要进行适当的转换来提供兼容性。

在Vue3中,由于 Vue 3 使用的是现代浏览器和 ES6+ 特性,因此,我们推荐使用 ES modules。ES modules 具有更简洁、易读的语法,并且与 Vue 3 中的 Composition API 更加相容。

Vue3中使用ArcGIS Maps SDK for JavaScript的步骤

创建 Vue 3 项目

1、新建ArcGISAPIProject文件夹,并用vscode打开

2、打开终端,在终端中输入npm create vite@latest创建vite项目,输入项目名称vite-vue3-arcgis,选择vue框架,并选中JavaScript语音创建项目

3、创建成功后,进入vite-vue3-arcgis文件夹,并使用npm i 安装依赖

4、安装成功后,输入npm run dev,运行项目查看基础框架是否正常

安装 ArcGIS Maps SDK for JavaScript

在终端中输入npm install @arcgis/core 安装ArcGIS Maps SDK for JavaScript

创建地图组件

在创建地图组件之前,我们先将框架默认提供的App.vue中的内容删除,并删除components文件夹中的HelloWorld.vue组件
1、在src文件夹下的components文件夹中新建ArcGisMap.vue组件,

2、在ArcGisMap.vue组件中的template中新建一个div,设置id属性为viewDiv,作为地图的容器,

3、导入需要的地图模块;要想在容器中展示地图,需要导入ArcGis为我们提供的Map和MapView两个模块

import Map from '@arcgis/core/Map.js';
import MapView from '@arcgis/core/views/MapView.js';

4、在代码中创建Map和MapView对象,并配置相关的参数

因为地图是在div中展示的,所以,我们的代码需要在onMounted中实现,代码如下

onMounted(()=>{initArcGisMap()
})const initArcGisMap = () => {const map = new Map({basemap: "topo-vector"});const view = new MapView({center: [-118.80500, 34.02700],zoom: 13,container: "viewDiv",map: map});
}

在这段代码中,我们首先创建了一个名为 map 的地图对象:

  • 通过 new Map() 创建了一个地图实例。
  • basemap: "topo-vector" 表示该地图使用了ArcGIS为我们提供的 topo-vector 底图,即矢量拓扑地图。
    然后,创建了一个名为 view 的地图视图对象:
  • 通过 new MapView() 创建了一个地图视图实例。
  • center: [-118.80500, 34.02700] 表示地图视图的初始中心点位置,这里设置的是经度和纬度坐标。
  • zoom: 13 表示地图视图的初始缩放级别,数值越大表示越近的缩放级别。
  • container: "viewDiv" 表示地图视图将被渲染到具有 viewDiv id 的 HTML 元素中。
  • map: map 表示该地图视图将使用上面创建的 map 对象作为其地图实例。

5、在App.vue中加载地图组件

<template><ArcGisMap></ArcGisMap>
</template><script setup>  
import ArcGisMap from './components/ArcGisMap.vue'
</script>
<style scoped>
</style>

此时运行程序,我们发现浏览器显示一片空白,并没有将地图加载进来,这是因为我们没有给div添加宽度和高度,所以显示为空
在这里插入图片描述
6、设置viewDiv的宽度可高度

<style scoped>  
#viewDiv {width: 100%;height: 100vh; 
}
</style>

运行浏览器,可以看到,我们已经将地图加载进来了
在这里插入图片描述
7、清除ArcGIS自带的ui组件
虽然我们的地图已经加载出来了,但是我们发现在右侧有一个滚动条,将滚动条下拉到底部,我们发现下面有放大、缩小及ArcGIS的相关信息
在这里插入图片描述
这是ArcGIS默认自带的信息,我们可以通过设置view.ui.components = [];来清除这些信息
在view实例化后面添加这句代码view.ui.components = [];即可清除

const initArcGisMap = () => {const map = new Map({basemap: "topo-vector"});const view = new MapView({center: [-118.80500, 34.02700],zoom: 13,container: "viewDiv",map: map});view.ui.components = []; 
}

view.ui.components = [] 用于移除地图视图中的默认 UI 组件

  • view.ui 表示地图视图的用户界面对象。
  • components 数组中存放了用于显示默认的 UI 组件,通过将其设置为空数组 [],实现了移除默认的 UI 组件。

刷新浏览器,可以发现,此时我们的浏览器就只有一个布满全屏的地图了
在这里插入图片描述
至此,我们已经在vue3中加载了ArcGIS地图,好了,这节就先到这里,下面一节我们来详细的了解下我们这节代码中的使用的Map和MapView的属性和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架的UNet-2D案例实现

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、环境准备与数据读取三、模型解析Transformer基本原理Attention模块 Transformer EncoderViT模型的输入整体构建ViT 四、模型训练与推理模型训练模型验证模型推理 近些年&#xff0c;随着基于自注意&…

改造旧项目-长安分局人事费用管理系统

一、系统环境搭建 1、搭建前台环境 vue3vite构建项目复制“银税系统”页面结构&#xff0c;包括&#xff1a;路由、vuex存储、菜单、登录&#xff08;复制一个干净的空架子&#xff09; 2、搭建后台环境 新三大框架 SSMP聚合工程&#xff1a;common、admin&#xff0c;新的…

2023国赛数学建模E题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

Linux服务器上配置HTTP和HTTPS代理

本文将向你分享如何在Linux服务器上配置HTTP和HTTPS代理的方法&#xff0c;解决可能遇到的问题&#xff0c;让你的爬虫项目顺利运行&#xff0c;畅爬互联网&#xff01; 配置HTTP代理的步骤 1. 了解HTTP代理的类型&#xff1a;常见的有正向代理和反向代理两种类型。根据实际需求…

涉及近300个业务场景,重庆银行数字员工平台建设解析

随着数字化转型战略规划的逐步落地&#xff0c;重庆银行于2022年6月成功建设了数字员工平台&#xff0c;该平台已成为行内数字化转型的标杆应用。数字员工平台以RPA&#xff08;机器人流程自动化&#xff09;为基础&#xff0c;AI&#xff08;人工智能&#xff09;技术为抓手&a…

PHP最简单自定义自己的框架view使用引入smarty(8)--自定义的框架完成

1、实现效果。引入smarty&#xff0c; 实现assign和 display 2、下载smarty&#xff0c;创建缓存目录cache和扩展extend 点击下面查看具体下载使用&#xff0c;下载改名后放到extend PHP之Smarty使用以及框架display和assign原理_PHP隔壁老王邻居的博客-CSDN博客 3、当前控…

leetcode 力扣刷题 旋转矩阵(循环过程边界控制)

力扣刷题 旋转矩阵 二维矩阵按圈遍历&#xff08;顺时针 or 逆时针&#xff09;遍历59. 旋转矩阵Ⅱ54. 旋转矩阵剑指 Offer 29. 顺时针打印矩阵 二维矩阵按圈遍历&#xff08;顺时针 or 逆时针&#xff09;遍历 下面的题目的主要考察点都是&#xff0c;二维数组从左上角开始顺…

C# Linq源码分析之Take (一)

概要 在.Net 6 中引入的Take的另一个重载方法&#xff0c;一个基于Range的重载方法。因为该方法中涉及了很多新的概念&#xff0c;所以在分析源码之前&#xff0c;先将这些概念搞清楚。 Take方法基本介绍 public static System.Collections.Generic.IEnumerable Take (this …

【LeetCode: 2811. 判断是否能拆分数组】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

NavMeshPlus 2D寻路插件

插件地址:h8man/NavMeshPlus&#xff1a; Unity NavMesh 2D Pathfinding (github.com) 我对Unity官方是深恶痛觉,一个2D寻路至今都没想解决,这破引擎早点倒闭算了. 这插件是githun的开源项目,我本身是有写jps寻路的,但是无法解决多个单位互相阻挡的问题(可以解决但是有性能问…

vue3+ts使用antv/x6 + 自定义节点

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

Python爬虫——scrapy_基本使用

安装scrapy pip install scrapy创建scrapy项目&#xff0c;需要在终端里创建 注意&#xff1a;项目的名字开头不能是数字&#xff0c;也不能包含中文 scrapy startproject 项目名称 示例&#xff1a; scrapy startproject scra_baidu_36创建好后的文件 3. 创建爬虫文件&…

MySQL表的操作

文章目录 MySQL表的操作1. 创建表2. 查看表2.1 查看数据库中存在的表2.2 查看表的属性2.3 查看创建时表的详细信息 3. 修改表3.1 向表中添加记录3.2 添加列3.3 修改列的数据类型3.4 删除列3.5 表的重命名3.6 修改列名 4. 删除表 MySQL表的操作 1. 创建表 CREATE TABLE table_…

zabbix监控tomcat

一、zabbix监控Tomcat1.1 zbx-agent配置1.1.1 关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下1.1.2 安装JDK1.1.3 设置JDK环境变量1.1.4 安装启动Tomcat1.1.5 配置 JMX 1.2 zbx-server配置1.2.1 安装zabbix&#xff08;省略&#xff0c;可看上一篇博客&#xf…

Docker自动化部署安装(十)之安装SonarQube

这里选择的是&#xff1a; sonarqube:9.1.0-community (推荐使用) postgres:9.6.23 数据库(sonarqube7.9及以后便不再支持mysql&#xff0c;版本太低的话里面的一些插件会下载不成功的) 1、docker-sonarqube.yml文件 version: 3 services:sonarqube:container_name: sonar…

Redis详解

Redis 简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对存储数据库&#xff0c;最初由 Salvatore Sanfilippo 开发&#xff0c;它在内存中存储数据&#xff0c;并提供了持久化功能&#xff0c;可以将数据保存到磁盘中&#xff0c;是一种N…

【论文阅读】DEPCOMM:用于攻击调查的系统审核日志的图摘要(SP-2022)

Xu Z, Fang P, Liu C, et al. Depcomm: Graph summarization on system audit logs for attack investigation[C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 540-557. 1 摘要 ​ 提出了 DEPCOMM&#xff0c;这是一种图摘要方法&#xff0c;通过将大图划…

从0开始搭建ns3环境以及NetAnim简单使用

一、环境准备 ns3是基于GNU/Linux平台使用C开发的工具软件&#xff0c;在windows系统中安装使用ns3环境&#xff0c;可以使用虚拟机VMware并安装ubuntu系统来实现&#xff0c;现将本教程所用到的虚拟机和系统镜像放到网盘提供下载 名称链接提取码VMware Workstation 17 Proht…

简约时尚的健康手表,智能守护每一刻,dido Y60上手

智能手表是现在很流行的一种智能设备&#xff0c;很多品牌都推出了各种各样的产品&#xff0c;但是大部分都更侧重功能和运动的方面&#xff0c;健康监测往往只是配角&#xff0c;而随着人们对自己的健康越来越重视&#xff0c;有些朋友只是单纯的需要一块专业的健康监测手表。…

选择任务管理软件:哪个更适合你的需求?

随着互联网的发展&#xff0c;知识管理是可以成为企业获得更大发展前景的神兵利器&#xff0c;任务协同&#xff0c;是服务于中小型团队&#xff0c;或者大型机构的终端组织。来看看这款国外流行的任务管理软件Zoho Projects。 任务管理是企业协同的重要组成部分。 任务管理是企…