【完整的WebGIS教程】2、第一个基于vue的webgis项目-程序员宅基地

技术标签: 从0开始基于vue的ArcGIS API for JS开发  vue.js  javascript  

1 利用vue-cli创建第一个vue项目

1 创建一个项目

a. 创建一个文件夹:命名为webgis

在这里插入图片描述

b. 在文件夹按Shitf+鼠标右键,打开PowerShell窗口,运行以下命令来创建一个新项目:

vue create hello-webgis

c. 选择vue的2版本,等待安装

在这里插入图片描述

d. 文件目录

hello-webgis  -------->项目名称
	.git      -------->git工具
	node_modules ----->用来管理项目中使用的依赖
	public    -------->项目中使用到的资源,图片等?
		- index.html-->项目主页
	src       -------->用来书写vue的源代码【重点】
		- assets ----->用来存放静态资源【重点】
		- components ->用来书写vue组件【重点】
		- App.vue ---->项目中的根组件【重点】
		- main.js ---->项目中的主入口【重点】
	.gitignore    ---->git版本控制忽略软件
	babel.config.js
	package.json  ---->依赖的名称和版本号
	package-lock.json->详细的依赖版本
	README.md     ---->项目说明文件

为规范代码,需要在根目录加入以下文件:这部分的教程CSDN有个大佬写了,链接.prettierrc代码格式化配置介绍_高素质车间工人的博客-程序员宅基地_.prettierrc

.vscode    --------->文件夹
    settings.json -->文件

在settings.json文件写入以下代码,设置在代码保存后自动格式化,每按下ctrl+S是代码会根据你配置的prettierrc规则进行格式化

{
    "editor.formatOnSave": true
}

在根目录加入以下文件

.prettierrc.js是代码格式化的配置文件,代码的规范规则很多很繁琐,不可能每个都去手动修改,有时候一个页面能有上百个规范问题,那么这时候代码自动格式化就很有用了,最有名的就是prettierrc了。

.prettierrc.js   -->文件,

在.prettierrc.js中写入以下代码:

module.exports = {
    semi: true, //句尾添加分号
    singleQuote: true, //使用单引号代替双引号
    trailingComma: 'all', //在对象或数组最后一个元素后面加逗号
    arrowParens: 'always', //箭头函数总是使用括号
    printWidth: 120, //超过最大值换行
    tabWidth: 2, //代码缩进
};

这样就在每次保存代码时自动将代码格式化了

在这里插入图片描述

2 运行vue-cli项目

在项目的根目录的cmd或powelshell或者在vs code的终端里面运行命令

npm run serve

在这里插入图片描述

注意一定要在项目的根目录里面输入命令!!!要不然会出现上面的错误
如果不在根目录,要cd hello-webgis命令,进入根目录

在根目录运行

在这里插入图片描述
在这里插入图片描述

3 得到你的第一个vue页面

恭喜你,成功得到了第一个vue开发的程序!

在这里插入图片描述

2 使用Element UI给页面添加布局

1 安装Element UI库

在命令行或者终端输入

npm install element-ui --save-dev

安装成功,在package.json的devDependencies(开发环境)中看到element-ui已经被添加进去了
在这里插入图片描述

2 使用element ui

1 在main.js引入element ui

官网链接:组件 | Element

在这里插入图片描述

更改main.js

import Vue from 'vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue'

Vue.config.productionTip = false
Vue.use(ElementUI);

new Vue({
    
  render: h => h(App),
}).$mount('#app')
2 引入element ui的布局

官网链接:组件 | Element
选择下图所示的容器布局,点击”显示代码“按钮,将代码复制到App.vue中。
在这里插入图片描述
在这里插入图片描述

更改App.vue

<template>
  <div id="app">
    <el-container class="app-out-pannel">
      <el-header class="sys-header">WebGIS一张图项目系统</el-header>
      <el-container class="app-content-pannel">
        <el-aside class="sys-menu">左侧菜单栏</el-aside>
        <el-main>地图区域</el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
export default {
  name: 'App',
  components: {},
};
</script>

<style>
html,
body,
#app {
  position: relative;
  width: 100%;
  height: 100%;
  margin: 0;
}
.app-out-pannel,
.app-content-pannel {
  height: 100%;
}
.sys-header {
  background-color: #303133;
  line-height: 60px;
  height: 60px;
  color: #fff;
  font-size: 600;
}
.sys-menu {
  background-color: #c0c4cc;
}
</style>

运行 npm run serve,得到我们的WebGIS一张图系统的界面

在这里插入图片描述

3 引入GIS功能

1 安装esri-loader

在命令行或终端输入:

npm install --save-dev esri-loader@3.5.0
注意,我是指定了版本安装的,大家也可以不指定版本
npm install --save-dev esri-loader

在这里插入图片描述

安装成功,可以看到devDependencies中多了一行

"esri-loader": "^3.5.0",

2 新建MapView.vue组件

在components下新建common文件夹,在文件夹内新建MapView.vue

注意命名要用驼峰命名,不能用mapView.vue或Mapview.vue

在MapView.vue中写入:

<template>
  <div id="mapview"></div>
</template>

<script>
export default {
    
  name: 'MapView',
  components: {
    },
};
</script>

<style>
#mapview {
    
  position: relative;
  width: 100%;
  height: 100%;
}
</style>

3 在App.vue中引入MapView.vue组件

在App.vue中写入:

<template>
  <div id="app">
    <el-container class="app-out-pannel">
      <el-header class="sys-header">WebGIS一张图项目系统</el-header>
      <el-container class="app-content-pannel">
        <el-aside class="sys-menu">左侧菜单栏</el-aside>
        <el-main class="sys-content">
          <MapView />
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
import MapView from './components/common/MapView.vue';
export default {
    
  name: 'App',
  components: {
    
    MapView,
  },
};
</script>

<style>
html,
body,
#app {
    
  position: relative;
  width: 100%;
  height: 100%;
  margin: 0;
}
.app-out-pannel,
.app-content-pannel {
    
  height: 100%;
}
.sys-header {
    
  background-color: #303133;
  line-height: 60px;
  height: 60px;
  color: #fff;
  font-size: 600;
}
.sys-menu {
    
  background-color: #c0c4cc;
}
.sys-content {
    
  padding: 5px;
}
</style>

4 在MapView.vue

在MapView.vue中写如下代码:

<template>
  <div id="mapview"></div>
</template>

<script>
//引入loadModules
import {
     loadModules } from 'esri-loader';
const options = {
    
  //引入ArcGIS API
  url: 'https://js.arcgis.com/4.18/init.js',
  css: 'https://js.arcgis.com/4.18/esri/themes/light/main.css',
};
export default {
    
  name: 'MapView',
  components: {
    },
  //mounted 生命周期函数,在MapView组件创建完成之后就会执行里面的函数
  mounted: function () {
    
    this._createMapView();
  },
  methods: {
    
    //   创建地图视图
    //async await是成对出现的,意思是把那些模块加载完成之后才可以执行后面的代码
    async _createMapView() {
    
      const [Map, MapView] = await loadModules(['esri/Map', 'esri/views/MapView'], options);
      const map = new Map({
    
        basemap: 'osm',
      });
      const view = new MapView({
    
        container: 'mapview',
        center: [108, 32],
        map: map,
        zoom: 5,
      });
      console.log(view);
    },
  },
};
</script>

<style>
#mapview {
    
  position: relative;
  width: 100%;
  height: 100%;
}
</style>

5 运行查看结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7rFn5dZe-1650452110743)(C:/1/BaiduNetdiskWorkspace/3-learnSomething/12%E5%9F%BA%E4%BA%8Evue%E7%9A%84ArcGIS%20WebGIS%E5%BC%80%E5%8F%91/1%E3%80%81%E7%AC%94%E8%AE%B0/2%E3%80%81%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%9F%BA%E4%BA%8Evue%E7%9A%84webgis%E9%A1%B9%E7%9B%AE.assets/image-20220420184851198.png)]

后语

到这里就完成了一个基于vue的ArcGIS API for js 的webgis页面的开发。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35093027/article/details/124304602

智能推荐

1217 Arbitrage(最短路)_arbitrage is the use of discrepancies in currency-程序员宅基地

文章浏览阅读199次。ArbitrageProblem Description Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency into more than one unit of the same currency. For example, suppose tha_arbitrage is the use of discrepancies in currency

使用libjpeg库实现jpeg图片的缩放(缩略图)_libjpeg缩略图-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏12次。libjpeg库的交叉编译libjpeg库主要用于jpeg格式图片的编解码,其交叉编译过程如下1. 下载源码从官方网站http://www.ijg.org/files/ 下载libjpeg库的源码,本次编译过程使用的是 jpegsrc.v9a.tar.gz2. 解压源码2.1 切换到下载目录,执行 tar -xzvf jpegsrc.v9a.tar.g_libjpeg缩略图

Mysql 时间戳类型使用心得-程序员宅基地

文章浏览阅读209次。2019独角兽企业重金招聘Python工程师标准>>> ..._mysql 时间戳用什么类型合适

串口上升时间标准_JESD204B 串行接口时钟需要及其实现-程序员宅基地

文章浏览阅读221次。ChenAndyMNCsignalchainFAE摘要随着数模转换器的转换速率越来越高,JESD204B串行接口已经越来越多地广泛用在数模转换器上,其对器件时钟和同步时钟之间的时序关系有着严格需求。本文就重点讲解了JESD204B数模转换器的时钟规范,以及利用TI公司的芯片实现其时序要求。关键字:LMK04800,LMK04828,LMK1802,LMK01010,JESD204内容1.J..._204b接口支持哪种时钟

深度学习环境配置(pytorch)_mx330显卡能玩跑深度学习程序吗-程序员宅基地

文章浏览阅读2.3k次,点赞7次,收藏69次。显卡是一个硬件,需要有一个驱动才能够被我们计算机识别出来,在安装驱动的时候,会随着驱动安装一个叫做cuda driver的东西,cuda是可以让显卡进行并行运算的一个平台,当我们的计算机想利用显卡做一些并行运算的时候,它就可以通过cuda driver去操作显卡。那为什么需要虚拟环境呢,一个直接的原因,例如我们一个项目要用pytorch开发,而另一个要用tensorflow开发,这样,我们可以创建两个虚拟环境,在里面分别安装pytorch和tensorflow,两个虚拟环境中的包和库不会互相冲突。_mx330显卡能玩跑深度学习程序吗

计算复杂性理论初步(一)多项式时间归约_多项式归约-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏12次。一、归约的意义求解一个算法问题的时候,我们往往可以直观地感受到有些问题是比较难的,有些问题是比较简单的,但是我们并不能因为没有设计出一个比较高效的算法,就说它是一个难问题,所以问题的难易是相对的,我们需要一个科学的手段来界定问题的难易我们可以用问题之间的归约,来界定两个问题之间相对难易程度的基本手段二、优化问题与判定问题很多经典的难问题都是优化问题,而一个优化问题往往可以..._多项式归约

随便推点

Python-Go python模块与包 - GO问题 - GO容量测试_python里的go是模块吗?-程序员宅基地

文章浏览阅读365次。python中自定义模块的简述模块 => python文件包 => 目录初始化 __init__.py => 初始化文件,当导入包的时候会自动执行python包中的文件是独立的,(与go区分)注意:当模块被导入的时候,模块中的代码都会被执行一次,建议每次导入模块的时候就导入模块的某个函数即可,否则很容易出现错误链接:https://pan.baidu.com/s/12jZiYPEmHDpWOQMlGTGEUQ?pwd=zouh提取码:zouh。_python里的go是模块吗?

Javascript 中 typeof 详解-程序员宅基地

文章浏览阅读68次。为什么80%的码农都做不了架构师?>>> ..._typeof content == 'boolean

Vue前端与Django后端实现前后端分离连接_vuedjango前后端分离-程序员宅基地

文章浏览阅读3.1k次,点赞9次,收藏31次。Vue前端与Django后端实现前后端分离连接_vuedjango前后端分离

问题解决之 RuntimeError: Couldn‘t load custom C++ ops. This can happen if your PyTorch XXX_runtimeerror: couldn't load custom c++ ops. this c-程序员宅基地

文章浏览阅读2.2w次,点赞11次,收藏66次。问题描述在深度学习环境 GPU 版 pytorch 下,运行代码出现报错,关键报错信息如下:RuntimeError: Couldn't load custom C++ ops. This can happen if your PyTorch and torchvision versions are incompatible, 大致的意思是说当前环境的 PyTorch 和 torchvision 版本不匹配,建议重新安装 PyTorch 和 torchvision。具体报错信息如下:Traceb_runtimeerror: couldn't load custom c++ ops. this can happen if your pytorch

极智开发 | 华为海思Hi35xx系列ARM32交叉编译opencv_海思 opencv 交叉编译-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。本教程详细记录了华为海思Hi35xx系列ARM32交叉编译opencv、zlib、libpng的方法。是上一篇x86环境源码编译opencv的姊妹篇。_海思 opencv 交叉编译

SpringBoot 数据库高效的数据访问及安全解决方案_springboot轻量数据库-程序员宅基地

文章浏览阅读1.9k次。随着互联网的飞速发展,网站流量越来越多,用户数据也越来越丰富,如何有效地存储、处理和检索数据成为了一个新的技术难题。Spring Boot 是 Spring 框架的一个轻量级开源框架,其在 JavaEE(Java Platform, Enterprise Edition)开发中扮演了重要角色。Spring Boot 提供了一种快速、方便的基于 Spring 的体系结构,从而使得 Java 开发人员能够更加关注业务逻辑而不是复杂的配置参数。_springboot轻量数据库

推荐文章

热门文章

相关标签