当前位置: 首页 > news >正文

arcgis api for js 设置地图服务请求带有请求头信息

通过地图的config模块的请求拦截器来设置请求头信息,如下示例:
1、引入:‘esri/config’
在这里插入图片描述
1、设置请求头信息

import { loadArcgisModules } from '@/utils/map/mapLoadUtil'
export default {
mounted() {this.loadMap()},
methods: {/** ****************** map 地图 *******************/loadMap() {// 加载arcgis api的模块到Vue.prototype.$esriloadArcgisModules(['esri/Map','esri/core/watchUtils','esri/config','esri/widgets/ScaleBar', 'esri/layers/support/LabelClass','esri/widgets/Home','esri/widgets/BasemapToggle','esri/widgets/Sketch','esri/widgets/Sketch/SketchViewModel','esri/widgets/Editor','esri/request','esri/views/MapView','esri/layers/SceneLayer','esri/layers/WMSLayer','esri/layers/TileLayer','esri/layers/WebTileLayer','esri/layers/GraphicsLayer','esri/layers/FeatureLayer','esri/layers/BaseTileLayer','esri/layers/MapImageLayer','esri/layers/BaseTileLayer','esri/Basemap','esri/Graphic','esri/geometry/Point','esri/tasks/QueryTask','esri/tasks/support/Query','esri/geometry/Polygon','esri/geometry/Multipoint','esri/symbols/LineSymbolMarker','esri/geometry/geometryEngine','esri/smartMapping/labels/clusters','esri/widgets/DistanceMeasurement2D', // 工具 测距'esri/widgets/AreaMeasurement2D', // 工具 测面'esri/widgets/Swipe' // 工具 滑动 卷帘]).then(() => {this.setYztRequestHeader()})},setYztRequestHeader() {const timestampHeader = (Date.now() / 1000).toFixed()const passid = 'B90-A44002202'const token = '16788bfc3d0f4ea182832630a7d73c39'const serverCode = 'YZT3837894173071'  this.$esri.config.request.interceptors.push({before: params => {// 请求之前的处理逻辑// 设置请求头信息// 只要地图服务的地址包含字符串内容'http/api/proxy/invoke',都会带上请求头if (params.url.includes('http/api/proxy/invoke')) {params.requestOptions.headers = {'x-tif-timestamp': timestampHeader,'x-tif-paasid': passid,'x-tif-nonce': 'nonce','x-tif-token': token,'x-tif-serviceId': serverCode}}}// after: function(params) {//     console.log(params)//     // 请求之后的处理逻辑//     // params.requestOptions.headers = {}// }})},}
}

mapLoadUtil.js:

import Vue from 'vue'
import { loadModules, setDefaultOptions } from 'esri-loader'
import { Message } from 'element-ui'
// 设置arcgis api的options
function setArcgisOptions() {// 远程引入// setDefaultOptions({ version: '4.19', css: true })// 引入服务器上(本地)的资源setDefaultOptions({url: `${process.env.VUE_APP_BASE_ARCGIS_API}/arcgis/4.19/init.js`,css: `${process.env.VUE_APP_BASE_ARCGIS_API}/arcgis/4.19/esri/css/main.css`})
}// 加载arcgis api的模块到Vue.prototype.$esri
export function loadArcgisModules(arcgisModulePath) {return new Promise((resolve, reject) => {// 设置optionssetArcgisOptions()// 加载arcgis api的模块loadModules(arcgisModulePath).then(args => {let arcgisModuleName = '' // 模块的默认名称for (let i = 0;i < args.length;i++) {arcgisModuleName = arcgisModulePath[i].split('/').pop()Vue.prototype.$esri[arcgisModuleName] = args[i]}resolve(args)}).catch(err => {Message.error('arcgis地图api加载失败,请检查网络设置')reject(err)})})
}

参考文章1:https://www.cnblogs.com/kk8085/p/17226776.html
参考文章2:https://blog.csdn.net/contant/article/details/132540807

http://www.dtcms.com/a/273604.html

相关文章:

  • 录音实时上传
  • uniapp
  • Claude Code是什么?国内如何使用到Claude Code?附国内最新使用教程
  • 基于定制开发开源AI智能名片与S2B2C商城小程序的旅游日志创新应用研究
  • uniapp小程序tabbar跳转拦截与弹窗控制
  • Elasticsearch混合搜索深度解析(上):问题发现与源码探索
  • Excel 转 JSON by WTSolutions API 文档
  • 较为深入的了解c++中的string类(2)
  • MyBatis 从入门到实战:代理 Dao 模式下的 CRUD 全解析
  • Netplan 配置网桥(Bridge)的模板笔记250711
  • excel如何只保留前几行
  • 提示工程:解锁大模型潜力的核心密码
  • 基于redis的分布式session共享管理之销毁事件不生效问题
  • 这个方法的目的是检查一个给定的项目ID(projectId)是否在当前数据库中被使用(搜索全库)
  • SortByCustomOrder 根据指定的顺序对任意类型的列表进行排序
  • Python七彩花朵
  • 【实时Linux实战系列】实时系统测试与合规认证指南
  • 二刷 黑马点评 商户查询缓存
  • <script>标签对HTML文件解析过程的影响以及async和defer属性的应用
  • 在 React Three Fiber 中实现 3D 模型点击扩散波效果
  • 车企战略投资项目管理的实践与思考︱中国第一汽车集团进出口有限公司战略部投资管理专家庞博
  • 台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)
  • 软件设计师中级逻辑公式题
  • Ubuntu 24.04上安装 Intelligent Pinyin 中文输入法
  • Java算法 -蓝桥云课 -卖货
  • 【联合国国家指标 2025:HDI、GDP、POP、面积】数据集countries_metric - Sheet1.csv
  • C++迭代器失效
  • 深入剖析Spring Bean生命周期:从诞生到消亡的全过程
  • 羲和:一款诗词风格的摆件App
  • GitHub Copilot:产品经理提升工作效率的AI助手