ArcGIS Maps SDK for JavaScript 是由 Esri 公司开发的一款用于构建交互式地图应用程序的 JavaScript 库。它提供了丰富的地图显示、分析和可视化功能,适用于各种场景。 目前,ArcGIS Maps SDK for JavaScript 提供两个主要版本:3.x 和 4.x。
ArcGIS Maps SDK for JavaScript 4.x 提供了两种方式来加载模块:AMD modules 和 ES modules(4.17以后的版本支持),两种加载方式的优缺点如下:
import
和 export
语法,使代码更清晰、可维护性更高,同时支持 async/await
等现代 JavaScript 功能。在Vue3中,由于 Vue 3 使用的是现代浏览器和 ES6+ 特性,因此,我们推荐使用 ES modules。ES modules 具有更简洁、易读的语法,并且与 Vue 3 中的 Composition API 更加相容。
1、新建ArcGISAPIProject文件夹,并用vscode打开
2、打开终端,在终端中输入npm create vite@latest
创建vite项目,输入项目名称vite-vue3-arcgis
,选择vue框架,并选中JavaScript语音创建项目
3、创建成功后,进入vite-vue3-arcgis
文件夹,并使用npm i
安装依赖
4、安装成功后,输入npm run dev
,运行项目查看基础框架是否正常
在终端中输入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的属性和方法。