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 })
}
}