You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
/*
|
|
* @Author: cbwu 504-wuchengbo@htsdfp.com
|
|
* @Date: 2024-03-28 16:49:02
|
|
* @LastEditors: cbwu
|
|
* @LastEditTime: 2024-04-13 10:45:17
|
|
* @Description: 封装的Polyline类
|
|
*/
|
|
import { Entity, Cartesian3, Color, CallbackProperty } from 'cesium'
|
|
import { BaseGeometry } from './baseGeometry'
|
|
import { EntityOptions } from '@/types/entityoptions'
|
|
export class PolylineEntity extends BaseGeometry {
|
|
static ID: number = 0
|
|
// positions: Cartesian3[] = []
|
|
controlPointsID: string[] = []
|
|
options: EntityOptions = {
|
|
// id: 'Polyline' + String(PolylineEntity.ID),
|
|
name: 'Polyline' + String(PolylineEntity.ID + 1),
|
|
show: true,
|
|
width: 3,
|
|
color: Color.GREEN,
|
|
}
|
|
constructor(ptArr: Cartesian3[], options?: EntityOptions) {
|
|
super()
|
|
this.options = { ...this.options, ...options }
|
|
// console.log(this.options)
|
|
this.positions = ptArr
|
|
// console.log(this.positions)
|
|
// 创建线实体对象
|
|
this.geometry = new Entity({
|
|
name: this.options.name,
|
|
polyline: {
|
|
positions: new CallbackProperty(() => {
|
|
return this.positions
|
|
}, false),
|
|
show: this.options.show,
|
|
width: this.options.width,
|
|
material: this.options.color,
|
|
},
|
|
})
|
|
this.entities.add(this.geometry)
|
|
// 添加控制点
|
|
ptArr.forEach((pt, index) => {
|
|
this.createControlPoint(pt, index)
|
|
})
|
|
|
|
PolylineEntity.ID++
|
|
}
|
|
}
|