From e72969f25dd1a243e48c783dedc0f198ee08c2b8 Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Wed, 20 Mar 2024 17:19:04 +0800
Subject: [PATCH] update:新增航线、航点事件编辑

---
 src/pages/page-web/projects/components/route-edit/index.vue |   52 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/src/pages/page-web/projects/components/route-edit/index.vue b/src/pages/page-web/projects/components/route-edit/index.vue
index b9955d6..8bd0d1f 100644
--- a/src/pages/page-web/projects/components/route-edit/index.vue
+++ b/src/pages/page-web/projects/components/route-edit/index.vue
@@ -62,15 +62,16 @@
             <div v-for="(event, index) in item.eventList" :key="index" class="s-event-icon">
               <a-tooltip placement="top">
                 <template #title>
-                  {{ event.name }}
+                  {{ event?.name }}
                 </template>
-                <img :src="event.icon" alt="icon" />
+                <img :src="event?.icon" alt="icon" />
               </a-tooltip>
             </div>
           </div>
         </contextMenu>
       </li>
     </ul>
+    <startPointTips v-if="xmlTemplate.missionConfig?.takeOffRefPoint['#text'] === ''" />
   </div>
 </template>
 
@@ -85,6 +86,7 @@
 import { useMyStore } from '/@/store'
 import useMapDraw, { kmlEntities as globalEntities, selectPointIndex as pointIdx } from '/@/utils/cesium/use-map-draw'
 import contextMenu from './components/content-menu.vue'
+import startPointTips from './components/setting-point-tip.vue'
 const store = useMyStore()
 const { appContext }: any = getCurrentInstance()
 const global = appContext.config.globalProperties
@@ -186,8 +188,33 @@
 // 新建航线初始化
 const initCreateRoute = () => {
   mapDraw = useMapDraw('', [], '', global)
-  const xml = kmzUtils.generateXML(xmlTemplate.value)
-  mapDraw.drawWayline([], xml)
+  const {
+    drawWayline,
+    waylineDetails: details,
+    waylinePointsEvent,
+    kmlEntities: entities,
+    clearWaylineData
+  } = mapDraw
+  clearWaylineData()
+  drawWayline()
+  waylineDetails.value = details
+  tragetPointArr.value = waylinePointsEvent.value
+  watch(
+    () => waylinePointsEvent.value,
+    (val) => {
+      tragetPointArr.value = val
+    },
+    {
+      deep: true,
+    },
+  )
+  kmlEntities.value = entities.value
+  // const xml = kmzUtils.generateXML(xmlTemplate.value)
+  // mapDraw.drawWayline([], xml)
+  if (!mouseRightClickEvent) {
+    // 添加右键事件
+    addMapPointEvent()
+  }
 }
 
 // 创建广告牌
@@ -287,6 +314,7 @@
     removeCesiumChildDom(popupDom)
     const { position } = click
     const { x, y } = position
+    const createTakeOffPointEvent = [{ class: 'start-point', title: '设置参考起飞点' }]
     const pointEvents = [
       {
         class: 'add-prev-point',
@@ -298,7 +326,12 @@
       },
     ]
     const defaultEvents = [{ class: 'finally-point', title: '在最后航点新增航点' }]
-    const events = selectPointIndex.value !== null ? [...defaultEvents, ...pointEvents] : defaultEvents
+    let events = []
+    if (xmlTemplate.value.missionConfig?.takeOffRefPoint['#text'] === '') {
+      events = createTakeOffPointEvent
+    } else {
+      events = selectPointIndex.value !== null ? [...defaultEvents, ...pointEvents] : defaultEvents
+    }
     popupDom = createPointPopupDom(events)
     global.$viewer.container.appendChild(popupDom)
     popupDom.style.transform = `translate3d(${x}px, ${y}px, 0)`
@@ -398,6 +431,14 @@
       },
       isRisky: { '#text': 0 },
     }
+    // 添加参考点
+    if (className === 'start-point') {
+      // 默认高度为6
+      const height = 6
+      const takeOffPoint = [latitude, longitude, height]
+      xmlTemplate.value.missionConfig.takeOffRefPoint['#text'] = takeOffPoint.join(',')
+    }
+    // 添加航点
     if (className === 'finally-point') {
       globalEntities.value.push(entity)
       xmlTemplate.value.Folder.Placemark.push(setting)
@@ -498,7 +539,6 @@
 onMounted(() => {
   // 清空画布
   clearCesiumMap()
-  console.log(!!filePath.value)
   if (filePath.value) {
     initDrawRoute()
   } else {

--
Gitblit v1.9.3