基于esri-loader的vue中使用arcgis for js


本文介绍的是基于esri-loader让vue中可以方便的按需引入arcgis api,较之前的方式可更好解决代码之间的耦合度与复杂度,让大家都可以写出完美看着顺心的代码。
本文arcgis api以4.x为例

安装依赖

npm i --save esri-loader

引入设置

如果不想使用官方提供的api地址,可以全局设置自己部署的api地址(尤其是内网环境尤其的重要哦)
如果没有特殊要求想换api地址的,可以使用默认的,下面main.js中的内容可以不用设置,但是要记得引入css类。
main.js文件写入:

import { loadScript, loadCss } from 'esri-loader'
// 添加gis的样式和api
loadCss("http://自己的地址/library/4.14/esri/css/main.css");
loadScript({
	dojoConfig: {
	  async: true
	},
	url: 'http://自己的地址/library/4.14/init.js'
});

使用方法

  • 可在需要的组件、脚本中引入
import { loadModules } from 'esri-loader'
  • 使用示例(下面示例的是加载FeatureLayer):
export function loadFeatureLayer(title, url, visible = true) {
  return loadModules(['esri/layers/FeatureLayer'], { css: true })
    .then(([FeatureLayer]) => {
      return FeatureLayer({
        title: title,
        outFields: ['*'],
        url: url,
        featureReduction: { type: 'selection' },
        visible: visible
      })
    })
}

以上面展示的代码为例,loadModules第一个参数可以跟一个数组,写入要引入类的相对地址,要引入什么类的话,类地址可以在api文档中查看的,然后then跟着的是引入进来类的名称,名称顺序最好与引入顺序对应。

探讨总结

基本的使用如上所示,在项目中使用的话我一般是建立一个mapCore脚本,来管理一个大二级子路由下的map与view状态,因为基本所有的类都是对于map或view状态操作的,这里提供一个地图对象总全局管理,并暴露出一些对地图的操作,查询,图层控制等等,方便各个组件调用,省着层层组件传递map或view对象繁琐。然后当组件销毁时这里也跟着销毁,除了一些公共的初始化参数,不对其他路由下地图对象状态污染。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 使用 esri-loader 加载 ArcGIS API for JavaScript 并显示文地图,可以按照以下步骤进行操作: 1. 首先,确保已经安装了 esri-loader 库,可以通过 npm 进行安装: ```shell npm install esri-loader --save ``` 2. 在需要使用地图的组件,引入 esri-loaderArcGIS 相关资源: ```vue <template> <div id="map-view"></div> </template> <script> import { loadModules } from 'esri-loader'; export default { name: 'MapView', mounted() { this.initMap(); }, methods: { async initMap() { // 加载地图模块和相关资源 const [Map, MapView] = await loadModules(['esri/Map', 'esri/views/MapView'], { css: true, // 加载 CSS 文件 }); // 创建地图实例 const map = new Map({ basemap: 'streets', }); // 创建地图视图实例 const view = new MapView({ container: 'map-view', map, }); // 设置地图视图的心和缩放级别 view.center = [114.07, 22.54]; // 设置心点的经纬度坐标(这里以深圳为例) view.zoom = 12; // 设置缩放级别 // 加载文地图模块 await loadModules(['esri/layers/WebTileLayer'], { url: 'http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}', }).then(([WebTileLayer]) => { const tileLayer = new WebTileLayer(); map.add(tileLayer); }); }, }, }; </script> <style> #map-view { height: 500px; } </style> ``` 3. 在上述代码,首先通过 `loadModules` 方法加载需要的地图模块和相关资源。然后,创建地图实例和地图视图实例,并设置心点和缩放级别。最后,通过加载文地图模块(`esri/layers/WebTileLayer`)来显示文地图。 注意:上述代码的地图服务链接是使用的是[国家地理信息公共服务平台](http://map.geoq.cn/)提供的在线地图服务,可以根据需要选择其他地图服务链接。 希望以上信息能够帮助到你!如有任何疑问,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值