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