service/base/renderer/VisualVariable.js Source
import { mapgis } from '../common/base';

/**
 * 视觉变量基类
 * @class mapgis.renderer.VisualVariable
 * @classdesc 视觉变量基类
 * @param {String} [type] 视觉变量类型,可选 "color"|"opacity"|"rotation"|"size"
 * @param {String} [field] 字段名称,包含用于确定每个要素的颜色/不透明度/大小/旋转的数据值的数字属性字段的名称
 * @param {Object} [legendOptions] 图例选项,用来在图例中展示视觉变量信息
 * @param {String} [valueExpression] 计算表达式,用来对要素中的单/多个属性进行数学计算
 * @param {String} [valueExpressionTitle] 计算表达式标题,在legendOptions属性中没有提供的情况下,将显示为图例中的标题
 */
export default class VisualVariable {
  constructor(option) {
    var options = option ? option : {};
    const { type, field, legendOptions, valueExpression, valueExpressionTitle } = options;
    this.type = type;
    this.field = field;
    this.legendOptions = legendOptions;
    this.valueExpression = valueExpression;
    this.valueExpressionTitle = valueExpressionTitle;
  }

  /**
  * @description 将JSON格式的视觉变量转换为JS对象
  * @param {Object} json 视觉变量的实例化JSON
  */
  fromJSON(json) {
    json = json || {};
    const { type, field, legendOptions, valueExpression, valueExpressionTitle } = json;
    this.type = type;
    this.field = field;
    this.legendOptions = legendOptions;
    this.valueExpression = valueExpression;
    this.valueExpressionTitle = valueExpressionTitle;
  }

  /**
  * 将JS对象转换为JSON格式
  * @returns {Object} 视觉变量的实例化JSON
  */
  toJSON() {
    return {
      type: this.type,
      field: this.field,
      legendOptions: this.legendOptions,
      valueExpression: this.valueExpression,
      valueExpressionTitle: this.valueExpressionTitle,
    };
  }
}

export { VisualVariable };
mapgis.renderer.VisualVariable = VisualVariable;