From 7d9fb50b4e444ba3afec098ad031e93b4e9ee9ee Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Wed, 29 Nov 2023 10:20:26 +0800
Subject: [PATCH] 航线库修改/api打包后可修改
---
src/components/g-map/DroneControlPanel.vue | 122 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 121 insertions(+), 1 deletions(-)
diff --git a/src/components/g-map/DroneControlPanel.vue b/src/components/g-map/DroneControlPanel.vue
index bf5c592..dbd425d 100644
--- a/src/components/g-map/DroneControlPanel.vue
+++ b/src/components/g-map/DroneControlPanel.vue
@@ -13,6 +13,10 @@
<Button :ghost="!flightController" size="small" @click="onClickFightControl">
{{ flightController ? '退出控制' : '进入控制' }}
</Button>
+
+ <Button size="small" @click="flyByPoints">
+ 图斑飞行
+ </Button>
</div>
</div>
<div class="row">
@@ -313,13 +317,19 @@
import DroneControlInfoPanel from './DroneControlInfoPanel.vue'
import { noDebugCmdList as baseCmdList, DeviceCmdItem, DeviceCmd } from '/@/types/device-cmd'
import { useDockControl } from './use-dock-control'
-
+import { flyByArea, Point } from '/@/api/wayline'
+import { parseJsonFile } from '/@/utils/geo-utils'
+import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
+import * as Cesium from 'cesium'
+import { start } from 'repl'
const props = defineProps<{
sn: string,
deviceInfo: DeviceInfoType,
payloads: null | PayloadInfo[],
modelValue: Boolean,
}>()
+
+const cesiumFunc = cesiumOperation()
const store = useMyStore()
const clientId = computed(() => {
@@ -482,6 +492,116 @@
enterFlightControl()
}
+// 根据图斑飞行
+async function flyByPoints () {
+ // 半径m
+ const radius = 7000
+ const dockPoint:Point = reactive({
+ lon: props.deviceInfo.dock.basic_osd.longitude,
+ lat: props.deviceInfo.dock.basic_osd.latitude
+ })
+ const deviceSn = props.deviceInfo.dock.basic_osd.sub_device?.device_sn
+ const jsonPath = 'src/main/resources/jkj(1).json'
+ const sn = props.sn
+
+ console.log(payloadSelectInfo, '-------------')
+ const payloadIndex = payloadSelectInfo.payloadIndex
+ // const jsonData = await parseJsonFile('../src/assets/jsonData/jkj(1).json')
+
+ // const features = jsonData.features
+ // const list = []
+
+ // features.forEach(feature => {
+ // const areaList = []
+ // feature.geometry.coordinates[0].forEach(areaPoint => {
+ // console.log('areaPoint:', areaPoint)
+ // const point = {
+ // lon: areaPoint[0],
+ // lat: areaPoint[1]
+ // }
+ // areaList.push(point)
+ // })
+ // list.push(areaList)
+ // })
+
+ flyByArea(sn, dockPoint, jsonPath, radius, deviceSn, payloadIndex).then(res => {
+ const targetPoint = res.data || []
+ // 机场位置
+ const startPoint = {
+ lon: props.deviceInfo.dock.basic_osd.longitude,
+ lat: props.deviceInfo.dock.basic_osd.latitude
+ }
+ targetPoint.unshift(startPoint)
+ console.log('targetPoint====', targetPoint)
+ // 获取到点之后在图上绘点
+ targetPoint.forEach((point: { lon: number; lat: number }, index: number) => {
+ console.log(point)
+ const setting = {
+ longitude: point.lon,
+ latitude: point.lat,
+ point: {
+ pixelSize: 8,
+ outlineWidth: 2,
+ color: Cesium.Color.RED,
+ outlineColor: Cesium.Color.BLACK,
+ },
+ label: {
+ text: '位置' + (index + 1),
+ outlineWidth: 20,
+ font: '14px sans-serif',
+ heightReference: 80,
+ pixelOffset: new Cesium.Cartesian2(0, -35),
+ fillColor: Cesium.Color.BLACK
+ },
+ id: 'target' + index,
+ }
+ cesiumFunc.addPoint(setting)
+ // 根据点画连线
+ let polylineSetting = {}
+ if (index === (targetPoint.length - 1)) {
+ polylineSetting = {
+ polyline: {
+ positions: Cesium.Cartesian3.fromDegreesArrayHeights([
+ point.lon,
+ point.lat,
+ 0,
+ targetPoint[0].lon,
+ targetPoint[0].lat,
+ 0
+ ]),
+ width: 10,
+ arcType: Cesium.ArcType.NONE,
+ material: new Cesium.PolylineArrowMaterialProperty(
+ Cesium.Color.RED
+ ),
+ },
+ id: 'fxTarget' + index
+ }
+ } else {
+ polylineSetting = {
+ polyline: {
+ positions: Cesium.Cartesian3.fromDegreesArrayHeights([
+ point.lon,
+ point.lat,
+ 0,
+ targetPoint[index + 1].lon,
+ targetPoint[index + 1].lat,
+ 0
+ ]),
+ width: 10,
+ arcType: Cesium.ArcType.NONE,
+ material: new Cesium.PolylineArrowMaterialProperty(
+ Cesium.Color.RED
+ ),
+ },
+ id: 'fxTarget' + index
+ }
+ }
+ cesiumFunc.addPolyline(polylineSetting)
+ })
+ })
+}
+
// 进入飞行控制
async function enterFlightControl () {
if (!clientId.value) {
--
Gitblit v1.9.3