From 85f2111f4544dafeb5b7230fc1a267adae5d9eef Mon Sep 17 00:00:00 2001 From: ethan Date: Fri, 17 May 2024 09:44:41 +0800 Subject: [PATCH] add createGeometryFromData --- debug/index.ts | 10 ++++++++-- src/index.ts | 30 +++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/debug/index.ts b/debug/index.ts index 5d16dd5..02c1cb8 100644 --- a/debug/index.ts +++ b/debug/index.ts @@ -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) { diff --git a/src/index.ts b/src/index.ts index cce8c7e..57c9d01 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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;