From a51171f691ec516929fbb29356ad9074d0439b6e Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Thu, 07 Mar 2024 17:32:45 +0800
Subject: [PATCH] update: 右键新增航线、事件编辑、kmz文件编辑
---
src/utils/cesium/use-kmz-tsa.ts | 73 ++++++++++++++++++++++++++++++++----
1 files changed, 65 insertions(+), 8 deletions(-)
diff --git a/src/utils/cesium/use-kmz-tsa.ts b/src/utils/cesium/use-kmz-tsa.ts
index a37e16e..2f49acf 100644
--- a/src/utils/cesium/use-kmz-tsa.ts
+++ b/src/utils/cesium/use-kmz-tsa.ts
@@ -1,11 +1,47 @@
-import { ref } from 'vue'
+import { ref, getCurrentInstance } from 'vue'
import { analyzeKmzFile, getKmlParams, generateKmlFormat } from '/@/utils/cesium/kmz'
+import { getLngLatAltitude } from './mapUtils'
+import JSZIP from 'jszip'
+import { saveAs } from 'file-saver'
+
+const JsZip = new JSZIP()
const kmlStr = ref('')
+const kmzFile = ref<any>(null)
+
+// 点位参数
+const placemark: any = {
+ Point: {
+ coordinates: '',
+ },
+ index: 0,
+ executeHeight: 80,
+ height: 80,
+ waypointSpeed: 10,
+ waypointHeadingParam: {
+ waypointHeadingMode: 'followWayline',
+ waypointHeadingAngle: 0,
+ waypointPoiPoint: '0.000000,0.000000,0.000000',
+ waypointHeadingPathMode: 'followBadArc',
+ waypointHeadingPoiIndex: 0,
+ },
+ waypointTurnParam: {
+ waypointTurnMode: 'toPointAndStopWithDiscontinuityCurvature',
+ waypointTurnDampingDist: 0.2,
+ },
+ useGlobalHeight: 1,
+ useGlobalSpeed: 1,
+ useGlobalHeadingParam: 1,
+ useGlobalTurnParam: 1,
+ useStraightLine: 1,
+ actionGroup: {},
+}
const useKmzTsa = () => {
const init = async (fileUrl: string, fileContent?: string) => {
- const kmzRes: string = await analyzeKmzFile(fileUrl)
+ const fileRes = await analyzeKmzFile(fileUrl)
+ kmzFile.value = fileRes.file
+ const kmzRes = await fileRes.content
if (fileContent) {
kmlStr.value = fileContent
return false
@@ -33,10 +69,26 @@
kmlStr.value = str
}
- const write = (settingParmas: any = {}, name?: string, isWpml?: boolean = false) => {}
-
- const del = () => {
+ // const write = (settingParmas: any = {}, name: string) => {
+ // }
+ const writePoint = (settingParmas: any = {}) => {
+ Object.keys(settingParmas).forEach((key: string) => {
+ placemark[key] = settingParmas[key]
+ })
+ const Placemark = `<Placemark>${generateKmlFormat(placemark)}</Placemark>`
+ const points: RegExpMatchArray = getKmlParams(kmlStr.value, false, {
+ name: 'Placemark',
+ findRegx: '([\\s\\S]*?)',
+ mode: 'g',
+ }) || ['']
+ const lastPoint = points[points.length - 1]
+ const index = kmlStr.value.indexOf(lastPoint)
+ const beforeStr = kmlStr.value.slice(0, index)
+ const afterStr = kmlStr.value.slice(index + lastPoint.length)
+ kmlStr.value = beforeStr + lastPoint + Placemark + afterStr
}
+
+ const del = () => {}
const edit = (settingParmas: any = {}, keyName?: string, isKeyWpml: boolean = false) => {
Object.keys(settingParmas).forEach((key: string) => {
@@ -50,7 +102,7 @@
const regxVal: any = getKmlParams(kmlStr.value, true, {
name: 'height',
findRegx: '([\\s\\S]*?)',
- mode: 'g'
+ mode: 'g',
})
regxVal.forEach((heightStr: string) => {
const rstr = generateKmlFormat({ height: settingParmas[key] })
@@ -66,13 +118,18 @@
}
const save = () => {
- console.log(kmlStr.value)
+ JsZip.file('wpmz/template.kml', kmlStr.value)
+ kmzFile.value.file('wpmz/template.kml', kmlStr.value)
+ JsZip.generateAsync({ type: 'blob' }).then((content) => {
+ saveAs(content, '新建航线-' + new Date().toLocaleString() + '.kmz')
+ })
}
return {
init,
create,
- write,
+ // write,
+ writePoint,
del,
edit,
save,
--
Gitblit v1.9.3