类名 common/document/layer/Utils.js
import {ElevationInfo, LayerEvent} from '../../base'

/**
 * 设置地图层
 * @private
 * @param {Object} layer 父图层对象
 * @param {Object} subLayer 子图层对象
 * @param {Object} SubLayerConstructor 子图层构造函数
 * */
function setSublayer(layer, subLayer, SubLayerConstructor) {
  // 是否添加子图层
  let isAdd = true

  for (let i = 0; i < layer._sublayers.length; i++) {
    // 判断name或id
    if (
      String(layer._sublayers[i].name) === String(subLayer.name) ||
      String(layer._sublayers[i].id) === String(subLayer.id)
    ) {
      Object.assign(layer._sublayers[i], subLayer)
      isAdd = false
      break
    }
  }

  for (let i = 0; i < layer.allSublayers.length; i++) {
    // 判断name或id
    if (
      String(layer.allSublayers[i].name) === String(subLayer.name) ||
      String(layer.allSublayers[i].id) === String(subLayer.id)
    ) {
      Object.assign(layer.allSublayers[i], subLayer)
      isAdd = false
      break
    }
  }

  // 添加子图层
  if (isAdd) {
    // 是子图层对象,直接添加
    if (subLayer instanceof SubLayerConstructor) {
      layer._sublayers.push(subLayer)
    }
    // 是Object对象,造一个WMSSubLayer对象
    else if (subLayer instanceof Object && !(subLayer instanceof Array)) {
      // 从所有子图层中找对应的子图层
      for (let i = 0; i < layer.allSublayers.length; i++) {
        if (
          String(subLayer.id) === String(layer.allSublayers[i].id) ||
          String(subLayer.name) === String(layer.allSublayers[i].name)
        ) {
          layer._sublayers.push(
            new SubLayerConstructor(
              Object.assign(layer.allSublayers[i].toJSON(), subLayer)
            )
          )
          break
        }
      }
    }
  }
}

/**
 * 发送事件私有方法
 * @private
 * @param {Object} layer layer对象
 * @param {String} mainType 主事件
 * @param {String} subType 子事件
 * */
function fireEvent(layer, mainType, subType) {
  // 发送更新事件
  if (layer._map) {
    layer._map.fire(
      mainType,
      new LayerEvent({
        type: subType,
        target: layer._map,
        layer,
        extend: {
          type: subType
        }
      })
    )
  }
}

/**
 * 设置要素的elevationInfo参数
 * @param {Feature} feature 要素对象
 * @param {Layer} layer 图层对象
 * */
function setElevationInfo(feature, layer) {
  // 如果要素上没有高程参数,就用图层上的,否则用要素自己的
  if (!feature.elevationInfo) {
    if (layer.elevationInfo) {
      feature.elevationInfo = layer.elevationInfo
    } else {
      feature.elevationInfo = new ElevationInfo()
    }
  }
}

export { setSublayer, fireEvent, setElevationInfo }
构造函数
成员变量
方法
事件