add createGeometryFromData

This commit is contained in:
ethan 2024-05-17 09:44:41 +08:00
parent 2f5e3a50a0
commit 85f2111f45
2 changed files with 37 additions and 3 deletions

View File

@ -173,9 +173,15 @@ buttonGroup.onclick = (evt) => {
case 'createGeometryFromData':
if (geometry) {
const points = geometry.getPoints();
debugger;
CesiumPlot.createGeometryFromData(points);
// debugger;
// CesiumPlot.createGeometryFromData(points);
CesiumPlot.createGeometryFromData(Cesium, viewer, {
type: 'FineArrow',
cartesianPoints: points,
});
}
break;
case 'cancelDraw':
if (geometry) {

View File

@ -18,7 +18,10 @@ import Polygon from './polygon/polygon';
import Circle from './polygon/circle';
import Sector from './polygon/sector';
const CesiumPlot = {
import { GeometryStyle } from './interface';
import * as CesiumTypeOnly from 'cesium';
const CesiumPlot: any = {
FineArrow,
AttackArrow,
SwallowtailAttackArrow,
@ -40,4 +43,29 @@ const CesiumPlot = {
Sector,
};
type CreateGeometryFromDataOpts = {
type: string;
cartesianPoints: CesiumTypeOnly.Cartesian3[];
style: GeometryStyle;
};
/**
*
* @param points
*/
CesiumPlot.createGeometryFromData = (cesium: any, viewer: any, opts: CreateGeometryFromDataOpts) => {
const { type, style, cartesianPoints } = opts;
const geometry = new CesiumPlot[type](cesium, viewer, style);
geometry.points = cartesianPoints;
const geometryPoints = geometry.createGraphic(cartesianPoints);
geometry.setGeometryPoints(geometryPoints);
if (geometry.type == 'polygon') {
geometry.drawPolygon();
} else {
geometry.drawLine();
}
geometry.finishDrawing();
geometry.onClick();
};
export default CesiumPlot;