ArcGIS api for JavaScript 4.x @arcgis/core 结合Vue3.0

前言

ArcGIS api for JavaScript 4.x从4.18开始支持@arcgis/core,之前没用过,这次正好有个项目,想拿来练练手,这也是我第一次用Vue3.0和ArcGIS api for JavaScript4.24来做项目。

已经上传GitHub,文末有仓库链接

环境

win10

arcgis api for js 4.24

node  v14.17.3

@vue/cli 5.0.8

VS Code 1.69.0

 

搭建步骤

一.安装node环境和vuecli

  具体怎么搭建,这里省略

二.新建vue项目

  ①打开命令行,打开某个文件夹,执行

vue create arcgisapi4_vue3

  

    

 

  ②选择功能:

    

 

  ③选择3.x:

  

 

 ④接下来的配置方案可以参考下方(图片模糊,放大凑合看~):、

 

 

 

 

 三、安装@arcgis/core

  要先打开已经建好的项目,然后执行npm install @arcgis/core ,如果想用旧版本,在后面加@版本号即可。

  

cd arcgisapi4_vue3
npm install @arcgis/core

   

 

 

 

  至此,我们已经安装完@arcgis/core。

  但是有个问题,arcgis/core样式默认是用的在线CDN,所以我们想办法把assets目录复制到public文件夹下面,我是直接复制粘贴过去的(我看有人写的是在package.json文件里修改运行命令"copy": "ncp ./node_modules/@arcgis/core/assets ./public/assets",没测试)。

 

四、修改代码部分

  直接上代码,有注释

  main.js

复制代码
1 import { createApp } from 'vue'
2 import App from './components/Map' // 为了方便,直接加载Map.vue,正式环境要用路由做
3 import router from './router'
4 import store from './store'
5 import esriConfig from '@arcgis/core/config'
6 import '@arcgis/core/assets/esri/themes/light/main.css' // 引入本地的arcgis api样式文件
7 esriConfig.assetsPath = './assets' // 设置资产路径
8 
9 createApp(App).use(store).use(router).mount('#app')
View Code
复制代码

 

  Map.vue

  

复制代码
 1 <template>
 2   <div class="mapView">
 3     <div id="viewDiv"></div>
 4   </div>
 5 </template>
 6 
 7 <script>
 8 import { provide, onMounted } from 'vue'
 9 import Map from '@arcgis/core/Map'
10 import SceneView from '@arcgis/core/views/SceneView'
11 export default {
12   name: 'MapView',
13   props: {
14     msg: String
15   },
16   setup () {
17     const map = new Map({
18       basemap: 'topo-vector'
19       // ground: 'world-elevation'
20     })
21     const view = new SceneView({
22       map: map,
23       //   spatialReference: {
24       //     wkid: 4490
25       //   },
26       camera: {
27         heading: 58.62, // face due east
28         tilt: 72.94, // looking from a bird's eye view
29         fov: 55,
30         position: {
31           latitude: 31.119977982,
32           longitude: 120.564301822,
33           z: 875.5
34         }
35       },
36       center: [120, 30],
37       zoom: 8,
38       extent: {
39         xmin: 120.0,
40         ymin: 30.0,
41         xmax: 121.64307457631968,
42         ymax: 32,
43         spatialReference: {
44           wkid: 4490
45         }
46       },
47       viewingMode: 'global' // local
48     })
49     provide('view', view) // 此处是为了让view能够跨组件通信,
50     // 后代组件只需要通过 const view = inject('view')来获取到view,然后进行操作
51     onMounted(() => {
52       view.container = 'viewDiv' // 初始化页面完成后,再把viewDiv给到view.container,
53       // 这里运用的很巧妙,如果把view声明也放到这里面,则跨组件通信会有延迟,很难解决
54     })
55   }
56 }
57 </script>
58 
59 <!-- Add "scoped" attribute to limit CSS to this component only -->
60 <style scoped lang="scss">
61 html,
62 body {
63   padding: 0;
64   margin: 0;
65   width: 100vw;
66   height: 100vh;
67   overflow: hidden;
68 }
69 .MapView {
70   width: 100%;
71   height: 100%;
72 }
73 #viewDiv {
74   width: 100%;
75   height: 100vh;
76 }
77 </style>
View Code
复制代码

 

五.运行

  cmd在当前目录执行npm run server

 

 

  项目直接放到GitHub上了,懒人可以直接克隆下来

参考地址

      vue使用@arcgis/core方式开发arcgis for js api地图项目

      ArcGIS API for JavaScript+vue系列(二)-地图view与map的基本概述

 【完整的WebGIS教程】6.2 使用@arcgis/core本地部署ArcGIS API for JS

 

posted @   Youse的二分口粮地  阅读(2708)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-07-11 写一个表达式检查所给的整数是否它第三个数字(从右向左)是7。示例:1732 -> true。
点击右上角即可分享
微信分享提示