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.pswp.cn/news/37731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“深入理解JVM:探索Java虛擬機的內部工作原理“

標題&#xff1a;深入理解JVM&#xff1a;探索Java虛擬機的內部工作原理 摘要&#xff1a;本文將深入探索Java虛擬機&#xff08;JVM&#xff09;的內部工作原理&#xff0c;包括JVM的架構、類加載、內存管理、垃圾回收機制等方面。通過理解JVM的內部工作原理&#xff0c;我們…

華為開源自研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;新的…

JAVA冒泡排序

package com.hzh.javase.day03;public class maopao {public static void main(String[] args) {int[] arr {2, 11,4,7,5,22,15,37,12,1};int zjvalue 0;//中間值boolean boofalse; //冒泡比較相鄰元素將小的提前打的放后 // 外層循環時用來控制輪數 // 內存循…

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;二維數組從左上角開始順…

輸出無重復的3位數和計算無人機飛行坐標

編程題總結 題目一&#xff1a;輸出無重復的3位數 題目描述 從{1,2,3,4,5,6,7,8,9}中隨機挑選不重復的5個數字作為輸入數組‘selectedDigits’&#xff0c;能組成多少個互不相同且無重復數字的3位數?請編寫程》序&#xff0c;從小到大順序&#xff0c;以數組形式輸出這些3位…

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_…

博客系統【架構】

用戶管理 實現用戶的注冊、登錄、注銷等功能 使用Redis做緩存處理、阿里云短信服務 確保用戶身份驗證和安全性 使用Jwt來鑒權 userId (主鍵&#xff0c;自增長) username (唯一&#xff0c;用戶名)【用于普通登錄】email (唯一&#xff0c;用戶的電子郵件地址) password (存儲…

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…