From 8b2a212cc9b54094886e0ea941a47abd49a50a8e Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Wed, 15 Jul 2026 16:52:38 +0800
Subject: [PATCH] feat:优化反无区域划分点击

---
 applications/drone-command/src/utils/cesium/shapeTools/edit/EditEllipseTool.js      |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/draw/DrawPolygonTool.js      |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/edit/EditRectangleTool.js    |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/draw/DrawEllipseTool.js      |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/edit/EditPolygonTool.js      |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/draw/DrawRectangleTool.js    |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/edit/EditBufferCircleTool.js |    3 ++-
 applications/drone-command/src/utils/cesium/shapeTools/draw/DrawBufferCircleTool.js |    3 ++-
 8 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawBufferCircleTool.js b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawBufferCircleTool.js
index 0198cf6..2f309bd 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawBufferCircleTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawBufferCircleTool.js
@@ -242,7 +242,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawEllipseTool.js b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawEllipseTool.js
index 6811412..3babb9b 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawEllipseTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawEllipseTool.js
@@ -144,7 +144,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawPolygonTool.js b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawPolygonTool.js
index 207ad4e..1a9c489 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawPolygonTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawPolygonTool.js
@@ -313,7 +313,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawRectangleTool.js b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawRectangleTool.js
index 8d9d03c..a5686a9 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawRectangleTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/draw/DrawRectangleTool.js
@@ -117,7 +117,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditBufferCircleTool.js b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditBufferCircleTool.js
index 8f77483..450d6e4 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditBufferCircleTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditBufferCircleTool.js
@@ -334,7 +334,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditEllipseTool.js b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditEllipseTool.js
index e548b93..1a8ad67 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditEllipseTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditEllipseTool.js
@@ -255,7 +255,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditPolygonTool.js b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditPolygonTool.js
index 7d0bf60..46da9c5 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditPolygonTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditPolygonTool.js
@@ -284,7 +284,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}
diff --git a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditRectangleTool.js b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditRectangleTool.js
index d76693a..1593356 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/edit/EditRectangleTool.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/edit/EditRectangleTool.js
@@ -149,7 +149,8 @@
 
 	getPositionFromScreen(screenPosition) {
 		const scene = this.viewer.scene
-		const cartesian = scene.pickPosition(screenPosition)
+		const ray = scene.camera.getPickRay(screenPosition)
+		const cartesian = ray ? scene.globe.pick(ray, scene) : null
 		if (cartesian) return cartesian
 		return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid)
 	}

--
Gitblit v1.9.3