欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VUE如何引入ArcGis 博客分类: vuearcgis arcgisvue 

程序员文章站 2024-03-16 15:00:10
...

首先,关于vue+arcgis的博文很少。下面我整理出我所能找到的。

国内:

1.vue-cli&webpack&arcgis API For JS的天坑之路(一) 这个博主一共讲了关于vue+arcgis的3个坑,有兴趣可前往博主那儿看。相关源码:LorryAdmin

*ArcGIS API for JavaScript 与 Vue.js 这篇博文仅仅提及了一下,以及告诉我们上面那篇博文的博主是个女生。

国外:

1.官网:Custom widgets with Vue (如果跟着此教程一步一步来也运行不起来,可以直接打开liveDemo地址把网页保存下来,慢慢看 可以去在线编辑:Sandbox

2.youtube(Rene Rubalcava):

Using VueJS with ArcGIS API for JavaScript (简单介绍)

ArcGIS API 4 for JavaScript with vue-cli and Nuxt(非常详细,整个过程都有讲解)

Using Frameworks with the ArcGIS API for JavaScript (在46分,此链接已经定位)

3.github 

CreateMap (一个你选择需要叠加的图层之后生成地图的应用)

MapGallery_Vue (一个浏览地图的应用)

---------------------------------------------------------------------------------------------------------------------------------------

以上是相关资料的整合。下面简单介绍一下该如何实现vue+arcgis。(昨天才开始接触vue和arcgis js,错误请指出,谢谢)

**********************以下前提为已有的VUE项目作为基础,所有涉及到的map均为ArcGis的map,而非数据结构的map********************************

1.首先,需要使用“esri-loader”,将esri依赖引入,就像其他各种loader一样。

在应用目录,使用npm安装 esri-loader。运行:npm install esri-loader

<很好,一堆警告,所以我一般不用npm下载依赖。可以使用yarn>
VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 

使用yarn:yarn add esri-loader (tips:其实package.json的依赖都可以直接使用yarn 下载的,命令:yarn 或者 yarn install )

VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 
 

2.在你的component文件夹下新建一个新的component:map.vue
 1)加入最基本的template,以及加入存放map的一个容器。

 

<template>
	<div id="viewDiv"></div>
</template>
 很好,我们已经给map建了一座房子,现在就请arcgis的map进来住吧!

 

2)在template下面加入script标签,开始写我们的逻辑啦!首先,需要引入esri-loader,esri-loader是把map引入的重要工具。就相当于一辆汽车把arcgis送到我们的房子里面

<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
</script>

 3)写大体的框架。

<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
    export deault{
        mounted(){}, //我们需要在该组件装载之后做的事情都放在该方法里
        methods: {} //我们需要执行的方法都定义在该属性里
    }
</script>

 4)需要在该vue组件装载完成后,我们需要把esriLoader引入/启动。

 

<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
    export deault{
        mounted(){
           if (!esriLoader.isLoaded()) {//判断是否加载
	       esriLoader.bootstrap((err) => {//加载esriloader
	         if (err) {
	           console.error(err)
	         }
	       }, {
	         url: 'https://js.arcgis.com/4.4/'
	       })
	     }
        }, //我们需要在该组件装载之后做的事情都放在该方法里
        methods: {} //我们需要执行的方法都定义在该属性里
    }
</script>

 5)既然把需要的东西都引入之后,那么就开始调用构建map的方法了。在methods里面加入创建地图的方法。

过程大致如下:创建一个map,定义好map的相关属性(basemap,地图样式等),再定义一个MapView,设置相关的属性(缩放级别,中心点等),然后view指定一个容器(div),再把前面定义好的map放入即可。

首先,创建一个createMap() 方法,然后和ArcGis Js api一样,用dojo引入依赖。这里,我们需要WebMap(这里为了方便演示效果,就使用WebMap)和普通的MapView依赖。

  1.加入需要的依赖

 

<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
    export deault{
        mounted(){
           if (!esriLoader.isLoaded()) {//判断是否加载
	       esriLoader.bootstrap((err) => {//加载esriloader
	         if (err) {
	           console.error(err)
	         }
	       }, {
	         url: 'https://js.arcgis.com/4.4/'
	       })
	     }
        }, //我们需要在该组件装载之后做的事情都放在该方法里
        methods: {
            createMap: function () {
	        esriLoader.dojoRequire([
	            'esri/WebMap',
         	    'esri/views/MapView'
	   	    ],(WebMap, MapView) => { })
	   	}
   } //我们需要执行的方法都定义在该属性里
    }
</script>
  2.创建webmap。使用id方式创建webMap
<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
    export deault{
        mounted(){
           if (!esriLoader.isLoaded()) {//判断是否加载
	       esriLoader.bootstrap((err) => {//加载esriloader
	         if (err) {
	           console.error(err)
	         }
	       }, {
	         url: 'https://js.arcgis.com/4.4/'
	       })
	     }
        }, //我们需要在该组件装载之后做的事情都放在该方法里
        methods: {
            createMap: function () {
	        esriLoader.dojoRequire([
	            'esri/WebMap',
         	    'esri/views/MapView'
	   	    ],(WebMap, MapView) => { 
	   	        var webmap = new WebMap({
	   	        portalItem: { // autocasts as new PortalItem()
	   	            id: "effddc6863f64f92a38b850e567d1fcb"
	   	            }
			});
	   	    })
	   	}
   } //我们需要执行的方法都定义在该属性里
    }
</script>
   3.创建view并将webmap放入view中
<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
    export deault{
        mounted(){
           if (!esriLoader.isLoaded()) {//判断是否加载
	       esriLoader.bootstrap((err) => {//加载esriloader
	         if (err) {
	           console.error(err)
	         }
	       }, {
	         url: 'https://js.arcgis.com/4.4/'
	       })
	     }
        }, //我们需要在该组件装载之后做的事情都放在该方法里
        methods: {
            createMap: function () {
	        esriLoader.dojoRequire([
	            'esri/WebMap',
         	    'esri/views/MapView'
	   	    ],(WebMap, MapView) => { 
	   	        var webmap = new WebMap({
	   	        portalItem: { // autocasts as new PortalItem()
	   	            id: "effddc6863f64f92a38b850e567d1fcb"
	   	            }
			});
	   	        var view = new MapView({
	   	            container: 'viewDiv', //需要放入哪个div中
	   	            center: [113.75, 23.04], //地图的中心点
	   	            zoom: 15, //缩放级别
	   	            locale: 'zh-cn', //语言
	   	            map:webmap 
	   	         }) ;
	   	    })
	   	}
   } //我们需要执行的方法都定义在该属性里
    }
</script>
 6)在mouted中调用createMap方法:
<template>
	<div id="viewDiv"></div>
</template>
<script>
    import * as esriLoader from 'esri-loader'
    export deault{
        mounted(){
           if (!esriLoader.isLoaded()) {//判断是否加载
	       esriLoader.bootstrap((err) => {//加载esriloader
	         if (err) {
	           console.error(err)
	         }else{
	             this.createMap(); //加载esriLoader没有错误则调用
	         }
	       }, {
	         url: 'https://js.arcgis.com/4.4/'
	       })
	     }else{
              this.createMap(); //已加载esriLoader则调用
             }
        }, //我们需要在该组件装载之后做的事情都放在该方法里
        methods: {
            createMap: function () {
	        esriLoader.dojoRequire([
	            'esri/WebMap',
         	    'esri/views/MapView'
	   	    ],(WebMap, MapView) => { 
	   	        var webmap = new WebMap({
	   	        portalItem: { // autocasts as new PortalItem()
	   	            id: "effddc6863f64f92a38b850e567d1fcb"
	   	            }
			});
	   	        var view = new MapView({
	   	            container: 'viewDiv', //需要放入哪个div中
	   	            center: [113.75, 23.04], //地图的中心点
	   	            zoom: 15, //缩放级别
	   	            locale: 'zh-cn', //语言
	   	            map:webmap 
	   	         }) ;
	   	    })
	   	}
   } //我们需要执行的方法都定义在该属性里
    }
</script>
<style scoped>
@import url('https://js.arcgis.com/4.4/esri/css/main.css');

#viewDiv {
  height:  1000px;
  width:  100%;
}
</style>
 **************************最后,忘记,需要设置一下容器div的样式,以及引入arcgis的css************
在最后加入。对于为什么容器的div不设置成100%,我找不到为什么这里的自适应高度无法显示地图的原因。有谁如何设置自适应高度的麻烦留言一下,Thx~VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 
<style scoped>
@import url('https://js.arcgis.com/4.4/esri/css/main.css');

#viewDiv {
  height:  1000px;
  width:  100%;
}
</style>
tada!总之效果如下。再总之。其实和普通的js引入arcgis就是多了一个esri-loader。其他没变。但是呢,普通的arcgis js 我没有用过。 
VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 
 
以上代码:github

 

 

 

 

 

 

 

  • VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 
  • 大小: 6.4 KB
  • VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 
  • 大小: 13.2 KB
  • VUE如何引入ArcGis 
            
    
    博客分类: vuearcgis arcgisvue 
  • 大小: 222.2 KB
相关标签: arcgis vue