专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > CGI

VUE怎么引入ArcGis

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
VUE如何引入ArcGis

首先,关于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>

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


 

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~眨眼
<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 我没有用过。 

 
以上代码:github

 

 

 

 

 

 

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: