arcgis图例获取

获取图例地址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
  }
}

猜你喜欢

转载自blog.csdn.net/ANNENBERG/article/details/129424019
今日推荐