    import { defaultValue } from '../../util'
    import { SymbolType } from '../enum'
    import Symbol from './Symbol'

    /**
     * Marker符号基类
     * @class MarkerSymbol
     * @moduleEX SymbolModule
     * @extends Symbol
     * @param {Object} options 构造参数
     * @param {Number} [options.xoffset = 0] marker的x轴偏移，单位像素
     * @param {Number} [options.yoffset = 0] marker的y轴偏移，单位像素
     * @param {Number} [options.angle = 0 ] 旋转角度，单位度，0~360度
     */
    class MarkerSymbol extends Symbol {
      constructor(options) {
        super(options)
        options = defaultValue(options, {})
        /**
         * 符号类型
         * @member {String} MarkerSymbol.prototype.type
         */
        this.type = SymbolType.simpleMarker
        /**
         * marker的x轴偏移
         * @member {Number} MarkerSymbol.prototype.xoffset
         */
        this.xoffset = defaultValue(options.xoffset, 0)
        /**
         * marker的y轴偏移
         * @member {Number} MarkerSymbol.prototype.yoffset
         */
        this.yoffset = defaultValue(options.yoffset, 0)
        /**
         * 旋转角度
         * @member {Number} MarkerSymbol.prototype.angle
         */
        this.angle = defaultValue(options.angle, 0)
      }

      /**
       * 将JS对象转换为JSON格式
       * @returns {Object} 符号的实例化JSON
       */
      toJSON() {
        const json = super.toJSON()
        json.angle = this.angle
        json.xoffset = this.xoffset
        json.yoffset = this.yoffset
        return json
      }

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