/*
 * @Author: cbwu 504-wuchengbo@htsdfp.com
 * @Date: 2024-03-28 16:35:33
 * @LastEditors: cbwu
 * @LastEditTime: 2024-04-16 13:57:15
 * @Description: 封装的点几何类
 */
import {
  Entity,
  Cartesian3,
  Color,
  PointGraphics,
  LabelGraphics,
  HeightReference,
} from 'cesium'
import { EntityOptions } from '@/types/entityoptions'
// 点
class PointEntity extends Entity {
  static ID: number = 0
  public subId: number = 0 //用于作为其他几何体的控制点时标记节点号
  options: EntityOptions = {
    id: 'Point' + String(PointEntity.ID),
    name: 'Point' + String(PointEntity.ID + 1),
    show: true,
    pixelSize: 8,
    color: Color.WHITE,
    outlineColor: Color.GREEN,
    outlineWidth: 0,
    // heightReference: HeightReference.NONE,
  }
  constructor(position: Cartesian3, options?: EntityOptions) {
    super({
      position: position,
    })
    this.options = { ...this.options, ...options }
    //点对象
    this.point = new PointGraphics({
      pixelSize: this.options.pixelSize,
      color: this.options.color,
      outlineColor: this.options.outlineColor,
      outlineWidth: this.options.outlineWidth,
      disableDepthTestDistance: 50000,
      // heightReference: this.options.heightReference,
    })
    // 标注对象
    this.label = new LabelGraphics({
      text: this.options.text,
      font: this.options.font,
      pixelOffset: this.options.pixelOffset,
    })

    PointEntity.ID++
  }
}

export { PointEntity }