获取图例地址MapServer/legend?f=pjson上获取
tongliao_jsc/serverUrl/arcgis/rest/services/keerqin/211124矢量图_生态红线与保护地_自然保护地/MapServer/0/images/8df07ef7664bd0e0b3f480c947ca2be6
案例如下initTlFun
import { baseMapInitParameters } from "@/map/map-config/mapConfig.js";
import axios from 'axios'
export const tucfilterFun = (router) => {
let newbaseMapInit = JSON.parse(JSON.stringify(baseMapInitParameters));
// 过滤该路由下图层
let resultArr = newbaseMapInit.layers.filter(item => item.router.indexOf(router) !== -1)
return resultArr
}
// 图层服务
export const tucServiceFun = (data, checked) => {
let nameAll = []
data.forEach(item => {
nameAll.push(item.name)
});
// 获取所有图层--先清除
let filterLayerAll = gisMap.map.getLayers().getArray().filter(item => nameAll.includes(item.values_.name))
filterLayerAll.map(item => item.setVisible(false))
// 选中图层
let filterLayer = gisMap.map.getLayers().getArray().filter(item => checked.includes(item.values_.name))
if (filterLayer.length > 0) {
filterLayer.map(item => item.setVisible(true))
}
}
// 服务图例
export const initTlFun = async (val, data) => {
// 取最后一个服务--添加图例
if (val.length) {
let tList = []
let temp = val[val.length - 1]
let resItem = data.filter(item => item.name === temp)
const { layerUrl } = resItem[0]
if(!layerUrl)return []
let newUrl = layerUrl + '/legend?f=pjson'
// 请求每一项图例url
const res = await axios.get(newUrl)
if (res.status !== 200 || res.data.error) return [];
//let arrLegend = res.data.layers[0]?.legend
//if (!arrLegend.length) return []
// // 收集图例信息集合
//arrLegend.map(async item => {
// let urlImg = layerUrl + '/0/images/' + item.url
// tList.push({ urlImg, name: item.label })
// })
// 多图层情况
res.data.layers.forEach((layerItem,index) => {
let arrLegend = layerItem.legend
if (!arrLegend.length) return []
// 收集图例信息集合
arrLegend.map(async item => {
let urlImg = layerUrl + `${'/'+index+'/images/'}` + item.url
// 图例名没有 用图层名代替
tList.push({ urlImg, name: item.label||layerItem.layerName })
})
})
return tList
}
}