类名 leaflet/document/theme/SimpleThemeLayer.js
import { Zondy } from '@mapgis/webclient-common'
import * as L from '@mapgis/leaflet'
// eslint-disable-next-line import/no-extraneous-dependencies
import { copyAttributesWithClip } from '@mapgis/webclient-graphic-render'
import GeoFeatureThemeLayer from './GeoFeatureThemeLayer'
import ThemeLayer from './ThemeLayer'

/**
 * @class Zondy.ThemeLayer.simpleThemeLayer
 * @classdesc 统一分配专题图。
 * @description 统一分配专题图对数据(<{@link Zondy.Feature.Vector}>)属性字段(attributes)的属性值进行分段,使用统一的颜色或符号(线型、填充)渲染不同范围段的属性值。统一分配专题图一般用来反映连续分布现象的数量或程度特征,如降水量的分布,土壤侵蚀强度的分布等。
 * @extends Zondy.ThemeLayer.GeoFeatureThemeLayer
 * @param {string} name - 图层名
 * @param {Object} options - 图层参数。
 * @param {string} [options.id] - 专题图层 ID。默认使用 CommonUtil.createUniqueID("themeLayer_") 创建专题图层 ID。
 * @param {number} [options.opacity=1] - 图层透明度。
 * @param {number} [options.nodesClipPixel=2] - 节点抽稀像素距离。
 * @param {boolean} [options.isHoverAble=false] - 图形是否在 hover 时高亮。
 * @param {boolean} [options.isMultiHover=false] - 是否多图形同时高亮,用于高亮同一个数据对应的所有图形(如:多面)。
 * @param {boolean} [options.isClickAble=true] - 图形是否可点击。
 * @param {boolean} [options.isAllowFeatureStyle=false] - 是否允许 feature 样式(style) 中的有效属性应用到专题图层。禁止对专题要素使用数据(feature)的 style。此属性可强制将数据 feature 的 style 中有效属性应用到专题要素上,且拥有比图层 style 和 styleGroups 更高的优先级,使专题要素的样式脱离专题图层的控制。可以通过此方式实现对特殊数据(feature) 对应专题要素赋予独立 style。
 */
const SimpleThemeLayer = GeoFeatureThemeLayer.extend({
  /**
   * @function Zondy.ThemeLayer.simpleThemeLayer.prototype.initialize
   * @description 初始化。
   * @param {string} name - 专题图名。
   * @param {Object} options - 需要设置的参数对象。
   */
  initialize(name, options) {
    GeoFeatureThemeLayer.prototype.initialize.call(this, name, options)
    // {Array<Zondy.ThemeLayer.ThemeStyle>} 图层中专题要素的样式
    this.style = []
  },

  /**
   * @function Zondy.ThemeLayer.simpleThemeLayer.prototype.getColor
   * @description 获取随机颜色
   * @return {Array} color
   */
  getColor() {
    const colorValue = '0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f'
    const colorArray = colorValue.split(',')
    let color = '#' // 定义一个存放十六进制颜色值的字符串变量,先将#存放进去
    for (let i = 0; i < 6; i++) {
      color += colorArray[Math.floor(Math.random() * 16)]
    }
    return color
  },
  /**
   * @function Zondy.ThemeLayer.simpleThemeLayer.prototype.getStyleByData
   * @description 根据用户数据(feature)设置专题要素的 Style
   * @return {Array<Zondy.ThemeLayer.ThemeStyle>} 专题要素的 Style
   */
  getStyleByData() {
    const me = this
    const style = copyAttributesWithClip({}, me.style)
    if (style.fillColor === null) {
      style.fillColor = me.getColor()
    }
    me.style = style
    return style
  },

  /**
   * @function Zondy.ThemeLayer.simpleThemeLayer.prototype.redraw
   * @description 重绘专题图
   */
  redraw() {
    return ThemeLayer.prototype.redraw.apply(this, arguments)
  }
})

Zondy.ThemeLayer.SimpleThemeLayer = SimpleThemeLayer
export default SimpleThemeLayer
构造函数
成员变量
方法
事件