    import { defaultValue } from '../../../util'
    import Color from '../../Color'
    /**
     * 标记符号
     * @author 基础平台-潘卓然
     * @class LineSymbolMarker
     * @moduleEX SymbolModule
     * @classdesc 线符号标记
     * @param {options} options 构造参数
     * @param {String} [options.type = 'line-marker'] marker类型:只能是'line-marker'
     * @param {String|Color} [options.color] 线符号标记颜色，默认为'rgb(0,0,0)'
     * @param {String} [options.placement = "begin-end"] 线符号标记摆放位置，"begin"|"end"|"begin-end"
     * @param {LineMarkerStyle} [options.style = 'arrow'] 线符号标记样式，可选值"arrow"|"circle"|"square"|"diamond"|"cross"|"x"
     */
    class LineSymbolMarker {
      constructor(options) {
        options = defaultValue(options, {})
        this.type = 'line-marker'
        this.color = Color.fromColor(defaultValue(options.color, {}))
        this.placement = defaultValue(options.placement, 'begin-end')
        this.style = defaultValue(options.style, 'arrow')
      }

      /**
       * 通过json构造并返回一个新的LineSymbolMarker对象
       * @param {Object} json 符号的实例化JSON
       * @return {LineSymbolMarker} 新的LineSymbolMarker对象
       */
      static fromJSON(json) {
        json = defaultValue(json, {})
        return new LineSymbolMarker(json)
      }

      /**
       * 将JS对象转换为JSON格式
       * @returns {Object} 符号的实例化JSON
       */
      toJSON() {
        return {
          type: this.type,
          color: Color.fromColor(this.color).toJSON(),
          placement: this.placement,
          style: this.style
        }
      }

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

    export default LineSymbolMarker