From c711e82c4b1685a4b00884d7aab70d9d3b0265ff Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Thu, 30 Oct 2025 11:10:31 +0800
Subject: [PATCH] feat:地图渲染添加点
---
src/api/layer/index.js | 4 +-
src/views/layerManagement/components/rightEdit.vue | 19 ++++-----
src/views/layerManagement/components/utils.js | 17 +++-----
src/views/layerManagement/components/leftList.vue | 8 +++-
src/views/layerManagement/index.vue | 33 ++++++++--------
5 files changed, 40 insertions(+), 41 deletions(-)
diff --git a/src/api/layer/index.js b/src/api/layer/index.js
index 8b810cc..7713e21 100644
--- a/src/api/layer/index.js
+++ b/src/api/layer/index.js
@@ -20,13 +20,13 @@
// 删除
export const deleteFenceApi = (id) => {
return request({
- url: `/drone-device-core/layer/api/v1/data?id=${id}`,
+ url: `/drone-device-core/layer/api/v1/data/${id}`,
method: 'delete',
});
};
// 新增
-export const attachDownload = (data) => {
+export const addFenceApi = (data) => {
return request({
url: `/drone-device-core/layer/api/v1/data`,
method: 'post',
diff --git a/src/views/layerManagement/components/leftList.vue b/src/views/layerManagement/components/leftList.vue
index d33b40e..a325a6e 100644
--- a/src/views/layerManagement/components/leftList.vue
+++ b/src/views/layerManagement/components/leftList.vue
@@ -54,7 +54,7 @@
</template>
<script setup>
-import { treeDataApi } from '@/api/layer/index';
+import { treeDataApi ,deleteFenceApi} from '@/api/layer/index';
import { inject, onMounted } from 'vue';
const emit = defineEmits(['update:coverData', 'update:deitData','newFencesMethods']);
const coverData = ref();
@@ -152,7 +152,11 @@
// 删除按钮事件
const handleDelete = node => {
- console.log('删除操作,节点:', node.data);
+let id = node.data.id
+ deleteFenceApi(id).then(res=>{
+ console.log('删除成功',res);
+ })
+ gettreeDataApi();
};
// 新增围栏
const addFence = () => {
diff --git a/src/views/layerManagement/components/rightEdit.vue b/src/views/layerManagement/components/rightEdit.vue
index 1e19c06..9b40748 100644
--- a/src/views/layerManagement/components/rightEdit.vue
+++ b/src/views/layerManagement/components/rightEdit.vue
@@ -58,7 +58,7 @@
</template>
<script setup>
-import { deitFenceApi } from '@/api/layer/index';
+import { deitFenceApi,addFenceApi } from '@/api/layer/index';
const emit = defineEmits([ 'callParentMethod']);
const layerParams = inject('layerParams');
const options = [
@@ -100,7 +100,7 @@
detailData.value = layerParams.value.editDetailData
totalArea.value = layerParams.value.total_area
totalCount.value = layerParams.value.total_count
-console.log('2222222',layerParams.value.decideWhetherToAddOrEdit);
+
const clearAllData = () => {
detailData.value = {}
@@ -122,16 +122,15 @@
};
const submitHandle = () => {
const params={
- folder_id:detailData.value.folder_id,
- id:detailData.value.id,
- name:detailData.value.name,
- description:detailData.value.description,
- is_enabled: detailData.value.is_enabled,
- area:detailData.value.area,
- altitude:detailData.value.altitude,
+ folder_id:1,
+ name:'测试',
+ description:'333366663',
+ is_enabled: true,
+ area:1200,
+ altitude:120,
geo_data: layerParams.value.polygonPosition,
}
-deitFenceApi(params).then(res=>{
+addFenceApi(params).then(res=>{
console.log('保存',res);
})
diff --git a/src/views/layerManagement/components/utils.js b/src/views/layerManagement/components/utils.js
index ede07e4..cdf7c42 100644
--- a/src/views/layerManagement/components/utils.js
+++ b/src/views/layerManagement/components/utils.js
@@ -101,9 +101,7 @@
}
// 绘制
drawTheArea(data){
- this.whetherToDraw = data
- console.log('this',this.whetherToDraw);
-
+ this.whetherToDraw = data
}
// 删除测区
deleteTheArea(data) {
@@ -113,7 +111,7 @@
// 开始绘制
startDrawing() {
if (!this.whetherToDraw) {
- console.log('当前不允许绘制,whetherToDraw 为 false');
+ console.log('当前不允许绘制');
return;
}
@@ -241,8 +239,7 @@
const pickedEntity = this.viewer.scene.pick(movement.position)?.id
const isPoint = pickedEntity?.name === DrawPolygon.ENTITY_NAMES.POINT
-console.log('pickedEntity',pickedEntity);
-console.log('isPoint',isPoint);
+
if (pickedEntity && isPoint) {
this.isDragging = true
this.draggedEntity = pickedEntity
@@ -293,9 +290,7 @@
// 编辑模式下,拖拽点实时更新
if (this.editingMode && this.draggedEntity?.customData) {
this.draggedEntity.position = cartesian
- this.curPolygon.positions[this.draggedEntity?.customData.ind] = cartesian
- console.log('拖拽');
-
+ this.curPolygon.positions[this.draggedEntity?.customData.ind] = cartesian
}
// 绘制模式下,实时更新最后一个点
@@ -330,7 +325,7 @@
const isPolygonPoint = pickedAllEntity.find(i => i.id.name === DrawPolygon.ENTITY_NAMES.POINT)
const isPolygon = pickedAllEntity.find(i => i.id.name === DrawPolygon.ENTITY_NAMES.POLYGON)
if (this.drawingMode && !this.whetherToDraw) {
- console.log('当前不允许绘制,无法添加点或闭合多边形');
+ console.log('当前不允许绘制');
return; // 阻断后续绘制逻辑
}
// 如果不是绘制模式
@@ -570,7 +565,7 @@
} else {
// 新增:不允许绘制时,确保绘制模式为 false,避免误触发
this.drawingMode = false;
- console.log('当前不允许绘制,初始化事件处理器但不启动绘制');
+ console.log('当前不允许绘制');
}
let newPosition = positions.map(item => {
diff --git a/src/views/layerManagement/index.vue b/src/views/layerManagement/index.vue
index 6a4d83e..6a2f096 100644
--- a/src/views/layerManagement/index.vue
+++ b/src/views/layerManagement/index.vue
@@ -74,7 +74,7 @@
provide('layerParams', layerParams);
const handleClick = tab => {
const clickedTab = tabData.value.find(item => item.type === tab.paneName);
- console.log(clickedTab, '5555')
+
activeType.value = clickedTab.type;
activeName.value = clickedTab.name;
};
@@ -86,7 +86,7 @@
viewer.entities.removeAll();
layerParams.value.editDetailData = val;
drawPolygonExample.editThePatch(true);
- const positions = parseGeoDataToPositions(val.geo_data, val.altitude);
+ const positions = parseGeoDataToPositions(val.geo_data, val.altitude);
if (positions.length < 3) return; // 少于3个点无法构成多边形
drawPolygonExample.drawTheArea(true)
drawPolygonExample.initPolygon(viewer, positions, true);
@@ -107,7 +107,6 @@
// 点击显示区域
const handleCoverDataUpdate = data => {
selectDataList.value = data;
-
if (selectDataList.value.length > 0) {
loadDataToMap(selectDataList.value);
} else {
@@ -120,12 +119,12 @@
// 存储所有有效坐标,用于后续定位
tbJwdList = [];
dataList.forEach(item => {
- const positions = parseGeoDataToPositions(item.geo_data, item.altitude);
+ let positions = parseGeoDataToPositions(item.geo_data, item.altitude);
+ positions.push(positions[0])
if (positions.length < 3) {
console.warn(`数据 ${item.name} 坐标点不足,无法绘制`);
return;
}
-
tbJwdList.push(...positions);
// 转换为 Cesium 所需的 [lng, lat, lng, lat, ...] 扁平数组格式
let degreesArray = [];
@@ -232,9 +231,10 @@
// 编辑/绘制
const loadPlanarRoute = async (positions = null, save = false) => {
+
if (positions) {
curPolygonPosition = positions.map(item => {
- let cartographic = Cesium.Cartographic.fromCartesian(item);
+ let cartographic = Cesium.Cartographic.fromCartesian(item);
let lng = Cesium.Math.toDegrees(cartographic.longitude); // 经度
let lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度
let height = Cesium.Math.toDegrees(cartographic.height); //高度
@@ -245,21 +245,22 @@
};
});
}
+
+
let polygon = curPolygonPosition.map(item => [item?.lng, item?.lat]);
- polygon.push([curPolygonPosition[0]?.lng, curPolygonPosition[0]?.lat]);
- // console.log('绘制的多边形顶点坐标(Cartesian3):', polygon);
-layerParams.value.polygonPosition = polygon
- console.log('polygon', layerParams.value.polygonPosition);
-};
-const throttleLoadPlanarRoute = throttle(loadPlanarRoute, 200);
-drawPolygonExample.subscribe('getPolygonPositions', data => {
- throttleLoadPlanarRoute(data);
-});
+ let polygonString = JSON.stringify(polygon);
+ // polygon.push([curPolygonPosition[0]?.lng, curPolygonPosition[0]?.lat]);
+ layerParams.value.polygonPosition = polygonString
+
+ };
+ const throttleLoadPlanarRoute = throttle(loadPlanarRoute, 200);
+ drawPolygonExample.subscribe('getPolygonPositions', data => {
+ throttleLoadPlanarRoute(data);
+ });
// 地图销毁
const destroyMap = () => {
drawPolygonExample.destroy();
-
if (viewer) {
viewer.destroy();
viewer = null;
--
Gitblit v1.9.3