`

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

 

 

 

 

 

 

 

  • 大小: 6.4 KB
  • 大小: 13.2 KB
  • 大小: 222.2 KB
分享到:
评论

相关推荐

    vue-arcgis.zip

    然后,在Vue组件中引入ArcGIS的JS库,创建地图实例,加载数据,最后应用点聚合功能。此外,可能还需要自定义Vue组件来封装地图交互逻辑和UI,以保持代码的模块化和可维护性。 通过查看链接中的博客文章...

    vue3+arcgis for js 4.17 加载天地图

    基于vue3,使用arcgis for javascript 4.17 加载天地图,已经上线使用。在使用是可以直接天地图官网更换需要得地图服务http://lbs.tianditu.gov.cn/data/dataapi.html

    vue2arcgis.zip

    接着,需要引入ArcGIS API库,这可能涉及到CDN链接或者本地文件引入,同时需要处理好依赖管理和版本兼容性问题。 3. **ArcGIS API for JavaScript**:掌握API的基本使用,包括创建Map对象、设置Basemap、加载图层、...

    vue + ArcGIS 地图应用系列二:加载地图

    1. 创建 Vue 项目 我们利用 Vue-CLI 工具进行快捷创建 下载 Vue-CLI 工具 yarn add global @vue/cli # or: npm i @vue/cli -g 创建 Vue 项目 ...2. 引入 ArcGIS API 因为历史原因,ArcGIS API 使用的

    Vue 3.X 结合 arcgis 4.X 加载国内四种在线底图 百度、腾讯、高德、天地图源码.zip

    Vue 3.X 结合 arcgis 4.X 加载国内四种在线底图 百度、腾讯、高德、天地图源码,里面有各种不同类型的底图效果,都是本人浏览调试各大地图页面抓取有效信息,进行比较之后整理出来的加载底图集合

    vue-arcgis.rar

    描述中提到的 "模块化加载arcgis javascript api 4.X功能" 指的是利用现代前端工具和最佳实践,将 ArcGIS API 按需引入到 Vue 应用中。这通常涉及到两个主要模式: 1. **esri-loader**:这是一个开源库,允许按需...

    基于Vue和ArcGIS API的上海疫情可视化系统源码(毕业设计).zip

    基于Vue和ArcGIS API的上海疫情可视化系统源码(毕业设计).zip 基于Vue和ArcGIS API的上海疫情可视化系统源码(毕业设计).zip 基于Vue和ArcGIS API的上海疫情可视化系统源码(毕业设计).zip 1、该资源内项目代码都是...

    arcgis-vue-echarts.zip

    1. 引入ArcGIS API:在HTML文件或Vue组件中通过CDN链接或者本地文件引入ArcGIS API。 2. 初始化地图:在Vue生命周期钩子函数中,如`mounted()`,创建地图实例并设置其属性,如中心位置、比例尺等。 3. 创建Vue组件:...

    arcgis-vue3-arcgis

    Vue3 + arcgis arcgis arcgis arcgis arcgis arcgis

    Arcgis实现路线等线方向箭头表示

    "Arcgis实现路线等线方向箭头表示" 在 GIS 领域中,Arcgis 是一个功能强大且广泛应用的 GIS 软件平台。随着 GIS 应用范围的不断扩展,Arcgis 在各个行业中的应用日益普遍。今天,我们将讨论如何使用 Arcgis 实现...

    ArcGIS+Echarts热力图扩展文件

    要使用这个扩展,开发者首先需要在项目中引入ArcGIS API和Echarts库,然后根据提供的示例或文档配置扩展。这可能涉及设置地图、图层、图例、数据源等多个步骤。例如,你需要定义一个Echarts实例,并在其中指定地图的...

    arcgis js实现的弹窗

    在GIS(地理信息系统)开发中,ArcGIS JavaScript API(arcgisjs)是一个强大的工具,用于构建交互式的Web GIS应用程序。本示例中的“arcgis js实现的弹窗”是利用这个API创建的一种用户界面元素,它能够提供丰富的...

    arcgis加载4490图层所需js

    在ArcGIS平台中,加载特定图层,如4490图层,通常涉及到JavaScript API的使用。"arcgis加载4490图层所需js"这个标题表明我们需要使用JavaScript来与ArcGIS服务进行交互,将4490图层显示在地图上。下面将详细解释这个...

    arcgis-vue:用esri-loader 结合vue开发arcgis,欢迎fork,欢迎 issue,欢迎star; https

    arcgis-vue官方文档首先请确保熟悉一下两篇文档:esri-loader 官方仓库的地址点击 。Aricgis api for js 再vue中的使用请点击 。这里准备了一些之前的使用步骤:安装依赖:npm install启动服务:npm run serve查看:...

    arcgis-vite-vue3-arcgis

    arcgis arcgis arcgis arcgis arcgis arcgis

    Arcgisjs结合threejs做动态线图层

    Arcgis js 三维动态管线图层 在Arcgis js官方示例中,有基于BaseLayerViewGL2D写的动态线图层案例。(案例地址) 该案例仅在mapview下有效,sceneview就不显示了,下面将结合threejs对该案例进行修改,实现sceneview...

    ArcGIS API for JavaScript 4.14 自定义测量工具(测距、测面,附源码)

    首先,ArcGIS API for JavaScript 4.14引入了草图绘制工具,这为创建自定义测量功能提供了基础。草图工具允许用户在地图上自由绘制图形,如线段和多边形,从而实现距离和面积的测量。通过集成这些工具,我们可以创建...

    arcGis for javascript4.8如何中文地图调用与切换

    新出的arcgis forJavaScript4.8中文地图调用,包括,中国色彩地图,中国灰色矢量地图等等,及其arcgis如何本地化,由于arcgis4.8的api是cdn托管的,所以可能会受到,防火墙限制,建议大家,把gis api换成本地化部署...

    arcgis-vue.rar

    集成ArcGIS到Vue.js项目中,首先需要引入ArcGIS JavaScript API。这可以通过CDN链接或者本地引入实现。在Vue组件中,我们可以利用ES6的import语句来导入API,例如: ```javascript import '...

    arcgis js 点聚类

    为了实现点聚类功能,开发者首先需要在`index.html`中引入ArcGIS API的JavaScript库,然后创建地图对象,并加载数据。接着,可以使用`ClusterLayer`或`HeatMapLayer`进行数据处理,设置合适的参数,并将其添加到地图...

Global site tag (gtag.js) - Google Analytics