import Zondy from '../Zondy'
import { defaultValue } from '../../util'
import Collection from '../Collection'
import Symbol from './Symbol'
import {createSymbol3DLayer} from './symbol3DLayer';
/**
* 三维符号基类,仅会支持三维场景,不支持二维场景<br/>
* 几何类型对应的符号类型如下:<br/>
* 点几何:PointSymbol3D, LabelSymbol3D<br/>
* 线几何:LineSymbol3D, LabelSymbol3D<br/>
* 区几何:PolygonSymbol3D, LabelSymbol3D<br/>
* gltf:MeshSymbol3D, LabelSymbol3D<br/>
* @param {Object} options 初始化参数
* @param {Collection} [options.symbolLayers] symbolLayers 符号图层集合,用于可视化要素对象
* */
class Symbol3D extends Symbol {
constructor(options) {
super(options)
options = defaultValue(options, {})
this.styleOrigin = undefined
/**
* 符号图层集合,用于可视化要素对象
* @member {Collection} Symbol3D.prototype.symbolLayers
*/
this.symbolLayers = new Collection()
// 更新symbolLayers
const _symbolLayers = defaultValue(options.symbolLayers, [])
if (_symbolLayers instanceof Array && _symbolLayers.length > 0) {
for (let i = 0; i < _symbolLayers.length; i++) {
this.symbolLayers.add(createSymbol3DLayer(_symbolLayers[i]))
}
}
}
/**
* <a id='toJSON'></a>
* 导出为JSON对象
* @return {Object} JSON对像
*/
toJSON() {
const _symbolLayers = []
this.symbolLayers.forEach(function (symbol) {
_symbolLayers.push(symbol.toJSON())
})
return {
type: this.type,
styleOrigin: this.styleOrigin,
symbolLayers: _symbolLayers
}
}
}
Zondy.Symbol.Symbol3D = Symbol3D
export default Symbol3D