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

/**
 * 图片Marker符号,支持点几何对象,参考示例:<a href='#new-PictureMarkerSymbol'>[图片Marker样式]</a>
 * <br><br>[ES5引入方式]:<br/>
 * Zondy.Symbol.PictureMarkerSymbol() <br/>
 * [ES6引入方式]:<br/>
 * import { PictureMarkerSymbol } from "@mapgis/webclient-common" <br/>
 * <br/>
 * @class PictureMarkerSymbol
 * @moduleEX SymbolModule
 * @extends MarkerSymbol
 * @param {Object} options 构造参数
 * @param {Color|String} [options.color = new Color(255, 255, 255, 1)] 覆盖颜色,默认为白色
 * @param {Number} [options.width = 20] 图片宽度,单位像素
 * @param {Number} [options.height = 20] 图片高度,单位像素
 * @param {String} [options.url = ''] 图片url,支持图片base64编码加载
 * @param {Number} [options.xoffset = 0] marker的x轴偏移,单位像素
 * @param {Number} [options.yoffset = 0] marker的y轴偏移,单位像素
 * @param {Number} [options.angle = 0 ] 旋转角度,单位度,0~360度
 *
 * @summary <h5>支持如下方法:</h5>
 * [1、克隆并返回新的符号对象]{@link Symbol#clone} <br/>
 * [2、导出一个JSON对像]{@link Symbol#toJSON} <br/>
 * <a href='#fromJSON'>[3、通过json构造并返回一个新的PictureMarkerSymbol对象]</a>
 *
 * @example <caption><h7 id='new-PictureMarkerSymbol'>创建图片Marker样式对象</h7></caption>
 * // ES5引入方式
 * const { PictureMarkerSymbol } = Zondy.Symbol
 * const { Color } = Zondy
 * // ES6引入方式
 * import { PictureMarkerSymbol, Color } from "@mapgis/webclient-common"
 * const pictureMarkerSymbol = new PictureMarkerSymbol({
 *   // 覆盖颜色
 *   color: new Color(252, 100, 22, 1),
 *   // 旋转角度,单位度,0~360度
 *   angle: 90,
 *   // marker的x轴偏移,单位像素
 *   xoffset: -1,
 *   // marker的y轴偏移,单位像素
 *   yoffset: 5,
 *   // 图片高度,单位像素
 *   height: 20,
 *   // 图片宽度,单位像素
 *   width: 30,
 *   // 图片url
 *   url: "图片url"
 * });
 */
class PictureMarkerSymbol extends MarkerSymbol {
  constructor(options) {
    super(options)
    options = defaultValue(options, {})

    /**
     * 符号类型
     * @member {String} PictureMarkerSymbol.prototype.type
     */
    this.type = SymbolType.pictureMarker

    /**
     * 图片宽度
     * @member {Number} PictureMarkerSymbol.prototype.width
     */
    this.width = defaultValue(options.width, 20)

    /**
     * 图片高度
     * @member {Number} PictureMarkerSymbol.prototype.height
     */
    this.height = defaultValue(options.height, 20)

    /**
     * 图片url
     * @member {String} PictureMarkerSymbol.prototype.url
     */
    this.url = defaultValue(options.url, '')
  }

  /**
   * 通过json构造并返回一个新的PictureMarkerSymbol对象<a id='fromJSON'></a>
   * @param {Object} json 符号的实例化JSON
   * @return {PictureMarkerSymbol} 新的PictureMarkerSymbol对象
   * @example <caption><h7>通过json构造并返回一个新的PictureMarkerSymbol对象</h7></caption>
   */
  static fromJSON(json) {
    json = defaultValue(json, {})
    return new PictureMarkerSymbol(json)
  }

  /**
   * 克隆并返回新的符号对象
   * @return {PictureMarkerSymbol} 克隆后的新符号对象
   */
  clone() {
    return new PictureMarkerSymbol(this.toJSON())
  }

  /**
   * 导出为JSON对象
   * @return {Object} JSON对像
   */
  toJSON() {
    const json = super.toJSON()
    json.width = this.width
    json.height = this.height
    json.url = this.url
    return json
  }
}

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