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