类名 leaflet/view/utils/WMSLayerUtil.js
import * as L from '@mapgis/leaflet'
import { defaultValue } from '@mapgis/webclient-common'
import { getBounds } from './support/utils'

class WMSLayerUtil {}

/**
 * 添加WMS图层
 * @param {WMSLayer} layer WMS图层基本对象
 * @param {Object} innerView leaflet的视图对象
 * @param {options} WMS图层options
 * @return {Object} 创建的WMS图层对象
 * */
WMSLayerUtil.addWMSLayer = function (layer, innerView, options) {
  options = defaultValue(options, {})
  let url = layer.url
  // 处理请求接口
  url = `${url.replace('services', 'ogc/doc')}?`
  // 处理有文件夹的情况
  const urlParts = url.split('igs/rest/ogc/doc/')
  const urlP1 = urlParts[0]
  let urlP2 = urlParts[1].split('/WMSServer')[0]
  urlP2 = urlP2.replace('/', ':')
  url = `${urlP1}igs/rest/ogc/doc/${urlP2}/WMSServer?`
  if (layer.tokenKey && layer.tokenValue) {
    url += `${layer.tokenKey}=${layer.tokenValue}`
  }
  // 设置地图显示范围
  const bounds = getBounds(layer, innerView)
  const wmsLayer = L.TileLayer.wmsclip(url, {
    // 图层名称
    layers: layer.layers,
    format: layer.imageFormat,
    // wms版本号
    version: layer.version,
    // 图层透明度
    opacity: layer.opacity,
    // 只显示一个图层,不平铺显示
    noWrap: true,
    tileSize: layer.imageWidth,
    transparent: layer.imageTransparency,
    bounds,
    // 裁剪对象
    clippingArea: options.clippingArea ? options.clippingArea : null
  }).addTo(innerView)
  // 设置图层id
  wmsLayer.id = layer.id
  // 设置图层顺序
  wmsLayer.setZIndex(layer._realIndex)
  return wmsLayer
}

export default WMSLayerUtil
构造函数
成员变量
方法
事件