类名 common/document/renderer/visualVariable/VisualVariable.js
import VisualVariableType from '../../../base/enum/VisualVariableType'
import { defaultValue } from '../../../util'
import { Zondy } from '../../../base'
import { createVisualVariable } from './index'

/**
 * 视觉变量基类
 * @class VisualVariable
 * @moduleEX RendererModule
 * @param {Object} options 初始化参数
 * @param {String} [options.field] 视觉变量字段
 * @param {String} [options.valueExpression] 字段表达式
 * @param {String} [options.valueExpressionTitle] 字段表达式标题
 * @example <caption>支持的视觉变量</caption>
 * [1、color视觉变量]{@link ColorVariable}
 * [2、opactiy视觉变量]{@link OpacityVariable}
 * [3、size视觉变量]{@link SizeVariable}
 * @example <caption>多个视觉变量叠加</caption>
 * // 从图层上获取renderer
 * const renderer = layer.renderer
 * // 设置多个视觉变量。
 * // 需要注意相同视觉变量作用效果一致,按照加入顺序会覆盖前面的效果。
 * // 颜色视觉变量和透明度视觉变量同时作用时,需要将颜色视觉变量放于透明度视觉变量之前。
 * renderer.visualVariables = [
 *  {
        type: "color",
        valueExpression: "$feature.FID",
        stops: [
          {
            color: "#FFFCD4",
            value: 0,
          },
          {
            color: "#350242",
            value: 200,
          },
        ],
     },
     {
        type: "size",
        valueExpression: "$feature.FID",
        stops:[
          {
            size:5,
            value:0
          },
          {
            size:20,
            value:300
          }
        ]
     },
      {
        type: "opacity",
        valueExpression: "$feature.FID",
        stops: [
          {
            opacity: 0.2,
            value: 0,
          },
          {
            opacity: 1.0,
            value:300,
          }
        ],
      }
 * ]
 */
class VisualVariable {
  constructor(options) {
    options = defaultValue(options, {})
    /**
     * 视觉变量默认类型
     * @member {String} VisualVariable.prototype.type
     */
    this.type = VisualVariableType.default
    /**
     * 视觉变量字段
     * @member {String} VisualVariable.prototype.field
     */
    this.field = defaultValue(options.field, '')
    /**
     * 视觉变量字段表达式
     * @member {String} VisualVariable.prototype.valueExpression
     */
    this.valueExpression = defaultValue(options.valueExpression, '')
    /**
     * 字段表达式标题
     * @member {String} VisualVariable.prototype.valueExpressionTitle
     */
    this.valueExpressionTitle = defaultValue(options.valueExpressionTitle, '')
  }

  /**
   * 通过json构造VisualVariable对象
   * @return {VisualVariable} json对象
   * */
  static fromJSON(json) {
    json = defaultValue(json, {})
    return createVisualVariable(json)
  }

  /**
   * 导出为json对象
   * @return {Object} json对象
   * */
  toJSON() {
    const json = {}
    json.field = this.field
    json.valueExpression = this.valueExpression
    json.valueExpressionTitle = this.valueExpressionTitle
    return json
  }

  /**
   * 克隆对象
   * @return {VisualVariable} 克隆后的VisualVariable对象
   */
  clone() {
    return new VisualVariable(this.toJSON())
  }
}

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