core/Creator.js

import { resetGlobeHandler } from '../utils/Handler'
import AddBillboard from './creator/billboard/AddBillboard'
import CircleDiffusion from './creator/circle-diffusion/CreateCircleDiffusion'
import { AddPanel } from './creator/panel/AddPanel'
import AddPoint from './creator/point/AddPoint'
import { AddRadarNormal } from './creator/radar-normal/AddRadarNormal'
import CreateRadarNormal from './creator/radar-normal/CreateRadarNormal'
import { AddRiver } from './creator/river/AddRiver'
import CreateRiver from './creator/river/CreateRiver'

/**
 * 创建对象类
 * @class
 */
export class Creator {
  /**
   * 构造函数
   * @param {Object} viewer 地图场景对象
   */
  constructor(viewer) {
    this._viewer = viewer
  }
  /**
   * 创建基础雷达
   * @param {entityCallback} callback 可选:回调函数
   */
  createRadarNormal(callback) {
    const handler = resetGlobeHandler(this._viewer)
    CreateRadarNormal(this._viewer, handler, callback)
  }

  /**
   * 创建动态水面
   * @param {primitiveCallback} callback 可选:回调函数
   */
  createRiver(callback) {
    const handler = resetGlobeHandler(this._viewer)
    CreateRiver(this._viewer, handler, callback)
  }

  createCircleDiffusion() {
    return new CircleDiffusion(this._viewer)
  }
}
/**
 * 添加对象类
 * @class
 */
export class Add {
  /**
   * 构造函数
   * @param {Object} viewer 地图场景对象
   */
  constructor(viewer) {
    this._viewer = viewer
  }

  /**
   * 添加点
   * @param {Cartesian3} position 点位置,笛卡尔坐标
   * @param {PointOption} options 点参数
   * @returns {Entity} 点对象,Entity类对象,参照Cesium
   */
  addPoint(position, options) {
    return AddPoint(this._viewer, position, options)
  }

  /**
   * 添加广告版
   * @param {Cartesian3} position 广告版位置,笛卡尔坐标
   * @param {BillboardOption} options 广告版参数
   * @returns {Entity} 广告版对象,Entity类对象,参照Cesium
   */
  addBillboard(position, options) {
    return AddBillboard(this._viewer, position, options)
  }
  /**
   * 添加水系(单个)
   * @param {Array<Cartesian3>} [positions] 水系边界节点集合,笛卡尔坐标
   * @param {String} [id=null] 可选:水系对象id
   * @returns {Primitive | GroundPrimitive} 水系对象,Primitive类对象,参照Cesium
   */
  addRiver(positions, id) {
    return AddRiver(this._viewer, { id, positions })
  }
  /**
   * 添加基础雷达
   * @param {Cartesian3} [position] 基础雷达中心点坐标,笛卡尔坐标
   * @param {Number} [radius] 基础雷达扫描半径
   * @param {String} [id=null] 可选:基础雷达id
   * @returns {Entity} 基础雷达对象,Entity类对象,参照Cesium
   */
  addRadarNormal(position, radius, id) {
    return AddRadarNormal(this._viewer, { id, position, radius })
  }

  /**
   * 添加热点面板
   * @param {Cartesian3} position 热点面板坐标,笛卡尔坐标
   * @param {String} text 热点面板内容
   * @param {String} [id] 可选,热点面板ID,具有唯一性
   * @param {String} [type] 可选,热点面板类型,'hot' | 'process'
   * @param {Number} [maxHeight=1000000] 热点面板最大可视距离,超过该距离将移除
   * @returns {Entity} 热点面板对象,Entity类对象,参照Cesium
   */
  addPanel(position, text, id, type, maxHeight = 100000) {
    return AddPanel(this._viewer, { position, text, id, maxHeight, type })
  }
}