类名 common/base/symbol/PictureFillSymbol.js
import FillSymbol from './FillSymbol'
import { SymbolType } from '../enum'
import { defaultValue } from '../../util'
import Zondy from '../Zondy'

/**
 * 图片填充符号
 * @class PictureFillSymbol
 * @extends FillSymbol
 * @moduleEX SymbolModule
 * @param {options} options 构造参数
 * @param {String} [options.url] 图片请求地址,支持baseUrl
 * @param {Number} [options.width = 12] 简单填充符号宽度,默认为12,单位像素
 * @param {Number} [options.height = 12] 简单填充符号高度,默认为12,单位像素
 * @param {Number} [options.xoffset = 0] x方向偏移,默认为0,单位像素
 * @param {Number} [options.yoffset = 0] y方向偏移,默认为0,单位像素
 * @param {Number} [options.xscale = 1] x方向拉伸,取值在0-1之间
 * @param {Number} [options.yscale = 1] y方向拉伸,取值在0-1之间
 *
 * @summary <h5>支持如下方法:</h5>
 * <a href='#fromJSON'>[1、将JSON格式的符号转换为JS对象]</a><br/>
 * <a href='#toJSON'>[2、将JS对象转换为JSON格式]</a><br/>
 * <a href='#clone'>[3、克隆并返回新的符号对象]</a>
 *
 * @example <caption><h7 id='new-PictureMarkerSymbol'>创建图片填充符号对象</h7></caption>
 * // ES5引入方式
 * const { PictureFillSymbol } = Zondy.Symbol
 * // ES6引入方式
 * import { PictureFillSymbol } from "@mapgis/webclient-common"
 * const pictureFillSymbol = new PictureFillSymbol({
 *   // 图片请求地址
 *   url: '图片请求地址',
 *   // 简单填充符号宽度,默认为12,单位像素
 *   width: 12,
 *   // 简单填充符号高度,默认为12,单位像素
 *   height: 12,
 *   // x方向偏移,默认为0,单位像素
 *   xoffset: 0,
 *   // y方向偏移,默认为0,单位像素
 *   yoffset: 0,
 *   // x方向拉伸,取值在0-1之间
 *   xscale: 1,
 *   // y方向拉伸,取值在0-1之间
 *   yscale: 1
 * });
 */
class PictureFillSymbol extends FillSymbol {
  constructor(options) {
    super(options)
    options = defaultValue(options, {})
    /**
     * 符号类型
     * @member {String} PictureFillSymbol.prototype.type
     */
    this.type = SymbolType.pictureFill
    /**
     * 简单填充符号高度,默认为12,单位像素
     * @member {Number} PictureFillSymbol.prototype.height
     */
    this.height = defaultValue(options.height, 12)
    /**
     * 图片请求地址
     * @member {String} PictureFillSymbol.prototype.url
     */
    this.url = defaultValue(options.url, '')
    /**
     * 简单填充符号宽度,默认为12,单位像素
     * @member {Number} PictureFillSymbol.prototype.width
     */
    this.width = defaultValue(options.width, 12)
    /**
     * x方向偏移,默认为0,单位像素
     * @member {Number} PictureFillSymbol.prototype.xoffset
     */
    this.xoffset = defaultValue(options.xoffset, 0)
    /**
     * x方向拉伸,取值在0-1之间
     * @member {Number} PictureFillSymbol.prototype.xscale
     */
    this.xscale = defaultValue(options.xscale, 1)
    /**
     *  y方向偏移,默认为0,单位像素
     * @member {Number} PictureFillSymbol.prototype.yoffset
     */
    this.yoffset = defaultValue(options.yoffset, 0)
    /**
     * y方向拉伸,取值在0-1之间
     * @member {String} PictureFillSymbol.prototype.yscale
     */
    this.yscale = defaultValue(options.yscale, 1)
  }

  /**
   * <a id="fromJSON"/>
   * 将JSON格式的符号转换为JS对象
   * @param {Object} json 符号的实例化对象
   */
  static fromJSON(json) {
    json = defaultValue(json, {})
    return new PictureFillSymbol(json)
  }

  /**
   * <a id="fromJSON"/>
   * 将JS对象转换为JSON格式
   * @returns {Object} 符号的实例化JSON
   */
  toJSON() {
    return {
      type: this.type,
      height: this.height,
      outline: this.outline.toJSON(),
      url: this.url,
      width: this.width,
      xoffset: this.xoffset,
      xscale: this.xscale,
      yoffset: this.yoffset,
      yscale: this.yscale
    }
  }

  /**
   * <a id="clone"/>
   * 克隆并返回新的符号对象
   * @return {PictureFillSymbol} 克隆后的新符号对象
   */
  clone() {
    return new PictureFillSymbol(this.toJSON())
  }
}

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