import MouseEvent from "../Event"; import MouseTip from "../MouseTip"; import Tools from "../Tools"; /** * @name: measure * @author: Administrator * @date: 2022-07-11 10:52 * @description:measure * @update: 2022-07-11 10:52 */ class Measure extends Tools { constructor(sdk, options = {text: "左键开始,右键结束;"}) { super(sdk, options) this.options = {...options} this.event = new MouseEvent(sdk) this.tip = new MouseTip(options.text, sdk) this.viewer = sdk.viewer this.defaultColor = 'rgba(246,49,49,0.55)' this.ids = [] YJ.Measure.Measures.push(this) this._isDestroy = false // this.pickStatus = {pick: YJ.getEarth().interaction.picking.enabled} } start() { this.setPickStatus(false) YJ.Measure.SetMeasureStatus(true) } destroy() { // YJ.Measure.Measures.pop() this._isDestroy = true this.end() this.ids.forEach(id => { this.remove_entity(id) }) } end() { // this.ids.forEach(id => { // this.remove_entity(id) // }) //还原上一次的状态 // this.setPickStatus(this.pickStatus.pick) YJ.Measure.SetMeasureStatus(false) this.tip && this.tip.destroy() this.event && this.event.destroy() this.tip = null this.event = null } create_point(cartesian,show = true) { let id = this.randomString() let p = this.cartesian3Towgs84(cartesian, this.viewer) this.viewer.entities.add( new Cesium.Entity({ id: id, position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt), billboard: { show: show, image: this.getSourceRootPath() + '/img/point.png', verticalOrigin: Cesium.VerticalOrigin.BOTTOM, disableDepthTestDistance: Number.POSITIVE_INFINITY, color: Cesium.Color.WHITE.withAlpha(0.99) } }) ) return id } remove_entity(id) { this.viewer.entities.removeById(id) } } export default Measure