From 3e13dd0242140c7189b65e4171efaa9190d1763d Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Mon, 18 Mar 2024 18:03:07 +0800
Subject: [PATCH] kmz文件打包完成、新增航线功能、事件编辑
---
src/utils/cesium/use-kmz-tsa.ts | 131 ++++++++++++++++++++++++++++++++++++++-----
1 files changed, 114 insertions(+), 17 deletions(-)
diff --git a/src/utils/cesium/use-kmz-tsa.ts b/src/utils/cesium/use-kmz-tsa.ts
index f6671a9..a437f4a 100644
--- a/src/utils/cesium/use-kmz-tsa.ts
+++ b/src/utils/cesium/use-kmz-tsa.ts
@@ -1,13 +1,8 @@
import { ref } from 'vue'
-import {
- analyzeKmzFile,
- XMLToJSON,
- JSONToXML
-} from '/@/utils/cesium/kmz'
+import { analyzeKmzFile, XMLToJSON, JSONToXML } from '/@/utils/cesium/kmz'
+import _ from 'lodash'
import JSZIP from 'jszip'
import { saveAs } from 'file-saver'
-
-const JsZip = new JSZIP()
const fileAuthor = reactive({
name: '',
@@ -150,30 +145,132 @@
template.value = tplXmlJson.Document
return kmzRes
}
- const create = () => {
-
+ const create = (waylineBasicInfo) => {
+ const author = window.localStorage.getItem('username') || ''
+ const createTime = new Date().getTime()
+ // 模板
+ const template = {
+ author,
+ createTime,
+ updateTime: createTime,
+ missionConfig: {
+ flyToWaylineMode: 'safely',
+ finishAction: 'goHome',
+ exitOnRCLost: 'goContinue',
+ executeRCLostAction: 'goBack',
+ takeOffSecurityHeight: 20,
+ takeOffRefPoint: '0.000000,0.000000,0.000000',
+ takeOffRefPointAGLHeight: 0,
+ globalTransitionalSpeed: 15,
+ globalRTHHeight: 80,
+ droneInfo: {
+ droneEnumValue: 0,
+ droneSubEnumValue: 0,
+ },
+ payloadInfo: {
+ payloadEnumValue: 0,
+ payloadSubEnumValue: 0,
+ payloadPositionIndex: 0,
+ },
+ },
+ Folder: {
+ templateType: 'waypoint',
+ useGlobalTransitionalSpeed: 0,
+ templateId: 0,
+ waylineCoordinateSysParam: {
+ coordinateMode: 'WGS84',
+ heightMode: 'EGM96',
+ globalShootHeight: 50,
+ positioningType: 'GPS',
+ surfaceFollowModeEnable: 1,
+ surfaceRelativeHeight: 100,
+ },
+ autoFlightSpeed: 7,
+ gimbalPitchMode: 'usePointSetting',
+ globalWaypointHeadingParam: {
+ waypointHeadingMode: 'followWayline',
+ waypointHeadingAngle: 0,
+ waypointPoiPoint: '0.000000,0.000000,0.000000',
+ waypointHeadingPathMode: 'followBadArc',
+ },
+ globalWaypointTurnMode: 'toPointAndStopWithDiscontinuityCurvature',
+ globalUseStraightLine: 0,
+ Placemark: [],
+ },
+ }
}
const save = () => {
- console.log('存在问题')
+ const JsZip = new JSZIP()
+ const waylines = waylinesContext(template.value)
+ const templateXml = JSONToXML(template.value, '', true)
+ const waylinesWpml = JSONToXML(waylines, '', true)
+ JsZip.file('wpmz/template.kml', templateXml)
+ JsZip.file('wpmz/waylines.wpml', waylinesWpml)
+ JsZip.generateAsync({ type: 'blob' }).then((blob) => {
+ saveAs(blob, '新建航线.kmz')
+ })
}
const generateXML = <T>(xmlJson: T) => {
return JSONToXML(xmlJson)
}
+ const waylinesContext = (templateJson: any) => {
+ const waylinesObj: { [key: string]: any } = {
+ missionConfig: {
+ flyToWaylineMode: null,
+ finishAction: null,
+ exitOnRCLost: null,
+ executeRCLostAction: null,
+ takeOffSecurityHeight: null,
+ globalTransitionalSpeed: null,
+ globalRTHHeight: null,
+ droneInfo: null,
+ payloadInfo: null,
+ },
+ Folder: {
+ templateId: null,
+ executeHeightMode: null,
+ waylineId: null,
+ autoFlightSpeed: null,
+ Placemark: null,
+ },
+ }
+ Object.keys(waylinesObj).forEach((key: string) => {
+ if (Object.prototype.toString.call(waylinesObj[key]) === '[object Object]') {
+ Object.keys(waylinesObj[key]).forEach((item) => {
+ waylinesObj[key][item] = templateJson[key][item]
+ if (item === 'executeHeightMode') {
+ waylinesObj[key][item] = templateJson[key].waylineCoordinateSysParam.heightMode
+ }
+ if (item === 'waylineId') {
+ waylinesObj[key][item] = templateJson[key].templateId
+ }
+ })
+ } else {
+ waylinesObj[key] = templateJson[key]
+ }
+ })
+ return waylinesObj
+ }
+
// 将wpmz/template.kml解析传来json转换回去,重新复制以便于后续绘制
- watch(() => template.value, (newobj) => {
- const xmlString = JSONToXML(newobj)
- kmlStr.value = xmlString
- }, {
- deep: true
- })
+ watch(
+ () => template.value,
+ (newobj) => {
+ const xmlString = JSONToXML(newobj)
+ kmlStr.value = xmlString
+ },
+ {
+ deep: true,
+ },
+ )
return {
init,
create,
save,
- generateXML
+ generateXML,
}
}
--
Gitblit v1.9.3