feat: 新增几个工具类(功能待完善)。

master
cbwu 12 months ago
parent 8ddcfd310d
commit 92221166dd

@ -0,0 +1,37 @@
/*
* @Author: cbwu 504-wuchengbo@htsdfp.com
* @Date: 2024-03-22 09:11:54
* @LastEditors: cbwu
* @LastEditTime: 2024-03-26 13:33:42
* @Description:
*/
import { Cartesian2, Viewer, Math, Cartographic } from 'cesium'
/**
*
* @param viewer
* @param windowPosition :
* @returns :
*/
function cartesian2ToCartesian3(viewer: Viewer, windowPosition: Cartesian2) {
const ray = viewer.camera.getPickRay(windowPosition)
if (ray != undefined) {
return viewer.scene.globe.pick(ray, viewer.scene)
} else return undefined
}
/**
*
* @param viewer
* @param windowPosition :
* @returns :WGS84
*/
function cartesian2ToWGS84(viewer: Viewer, windowPosition: Cartesian2) {
const cartesian3 = cartesian2ToCartesian3(viewer, windowPosition)
if (cartesian3 != undefined) {
const cartographic = Cartographic.fromCartesian(cartesian3)
const lon = Math.toDegrees(cartographic.longitude) // 经度
const lat = Math.toDegrees(cartographic.latitude) // 纬度
const alt = cartographic.height // 高度
return [lon, lat, alt]
} else return []
}
export { cartesian2ToCartesian3, cartesian2ToWGS84 }

@ -0,0 +1,7 @@
/*
* @Author: cbwu 504-wuchengbo@htsdfp.com
* @Date: 2024-03-22 15:42:49
* @LastEditors: cbwu
* @LastEditTime: 2024-03-22 15:43:23
* @Description:
*/

@ -0,0 +1,134 @@
/*
* @Author: cbwu 504-wuchengbo@htsdfp.com
* @Date: 2024-03-20 08:55:59
* @LastEditors: cbwu
* @LastEditTime: 2024-03-26 09:00:46
* @Description:
*/
import {
Entity,
Cartesian3,
Color,
PrimitiveCollection,
PointPrimitiveCollection,
PolylineGeometry,
PointGraphics,
Property,
PolylineGraphics,
PolygonGraphics,
} from 'cesium'
type EntityOptions = {
id?: string
name?: string
show?: boolean
pixelSize?: number
color?: Color
fillColor?: Color
fill?: boolean
width?: number
outlineWidth?: number
}
// 点
class PointEntity extends Entity {
static id: number = 0
options: EntityOptions = {
id: 'Point' + String(PointEntity.id),
name: 'Point' + String(PointEntity.id + 1),
show: true,
pixelSize: 10,
color: Color.GREEN,
outlineWidth: 0,
}
constructor(position: Cartesian3, options?: EntityOptions) {
super({
// id: options?.id || String(PointEntity.id),
position: position,
})
this.options = { ...this.options, ...options }
this.name = this.options.name
this.point = new PointGraphics({ ...this.options })
PointEntity.id++
}
}
// 线
class PolylineEntity extends Entity {
static id: number = 0
options: EntityOptions = {
id: 'Polyline' + String(PolylineEntity.id),
name: 'Polyline' + String(PolylineEntity.id + 1),
show: true,
width: 2,
color: Color.GREEN,
}
constructor(ptArr: Cartesian3[] | Property, options?: EntityOptions) {
super({
// id: options?.id || String(PolylineEntity.id),
})
this.options = { ...this.options, ...options }
this.name = this.options.name
this.polyline = new PolylineGraphics({
positions: ptArr,
show: this.options.show,
width: this.options.width,
material: this.options.color,
})
PolylineEntity.id++
}
}
// 多边形
class PolygonEntity extends Entity {
static id: number = 0
options: EntityOptions = {
id: 'Polygon' + String(PolygonEntity.id),
name: 'Polygon' + String(PolygonEntity.id + 1),
show: true,
width: 2,
color: Color.RED,
fillColor: Color.RED.withAlpha(0.5),
fill: true,
}
constructor(ptArr: Cartesian3[] | Property, options?: EntityOptions) {
super({
// id: options?.id || String(PolygonEntity.id),
})
this.options = { ...this.options, ...options }
this.name = this.options.name
this.polygon = new PolygonGraphics({
show: this.options.show,
hierarchy: ptArr,
material: this.options.fillColor, //填充颜色
fill: this.options.fill, //是否填充
outlineWidth: this.options.width, //线宽
outlineColor: this.options.color, //线颜色
})
PolygonEntity.id++
}
}
// 线
class Polyline extends PrimitiveCollection {
constructor(ptArr: Cartesian3[]) {
super()
this.add(this.createPoints(ptArr))
this.add(this.createPolyline(ptArr))
// this.id
}
private createPoints(posArr: Cartesian3[]) {
const points = new PointPrimitiveCollection()
for (const pos in posArr) {
points.add({
position: pos,
color: Color.RED,
pixelSize: 10,
})
}
return points
}
private createPolyline(posArr: Cartesian3[]) {
return new PolylineGeometry({
positions: posArr,
width: 2,
colors: new Array(posArr.length).fill(Color.fromCssColorString('green')),
})
}
}
export { PointEntity, Polyline, PolylineEntity, PolygonEntity }
Loading…
Cancel
Save