From c0327c583bedec8e9421e2cba9b0447c0e06a494 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 13 Nov 2023 10:16:18 +0800
Subject: [PATCH] 图斑加载
---
src/hooks/use-cesium-tsa.ts | 14 +++---
src/api/wayline.ts | 14 +++++++
src/pages/page-web/projects/tsa.vue | 1
src/utils/geo-utils.ts | 13 ++++++
src/components/g-map/DroneControlPanel.vue | 37 ++++++++++++++++++
5 files changed, 72 insertions(+), 7 deletions(-)
diff --git a/src/api/wayline.ts b/src/api/wayline.ts
index 31b3c69..a58b3a2 100644
--- a/src/api/wayline.ts
+++ b/src/api/wayline.ts
@@ -205,3 +205,17 @@
const result = await request.get(url)
return result.data
}
+
+export interface Point{
+ lon:number,
+ lat:number,
+ height?:number,
+ distance?:number
+}
+
+export const flyByArea = async function (sn:string,dockPoint:Point,areaList:any[],radius:number): Promise<IWorkspaceResponse<any>> {
+ const url = `${HTTP_PREFIX}/workspaces/${sn}/jobs/flyByArea`
+ const result = await request.post(url,{dockPoint:dockPoint,areaList:areaList,radius:radius})
+ return result.data
+}
+
diff --git a/src/components/g-map/DroneControlPanel.vue b/src/components/g-map/DroneControlPanel.vue
index bf5c592..549ed53 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,6 +317,8 @@
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'
const props = defineProps<{
sn: string,
@@ -482,6 +488,37 @@
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 jsonData = await parseJsonFile('../src/assets/jsonData/图斑_FeaturesToJSON(1).json')
+ const sn = props.sn
+ 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, list, radius).then(res => {
+ console.log(res, '----------------')
+ })
+}
+
// 进入飞行控制
async function enterFlightControl () {
if (!clientId.value) {
diff --git a/src/hooks/use-cesium-tsa.ts b/src/hooks/use-cesium-tsa.ts
index 354e786..36fd161 100644
--- a/src/hooks/use-cesium-tsa.ts
+++ b/src/hooks/use-cesium-tsa.ts
@@ -140,8 +140,8 @@
}
}
- function removeAllDataSource() {
- viewer.dataSources.removeAll();
+ function removeAllDataSource () {
+ viewer.dataSources.removeAll()
}
// 清除所有标记点
@@ -254,18 +254,18 @@
}
}
- //加载json文件
- const loadGeoJson = (url:string)=>{
+ // 加载json文件
+ const loadGeoJson = (url:string) => {
const option = {
stroke: Cesium.Color.HOTPINK,
fill: Cesium.Color.PINK,
strokeWidth: 3,
}
- const promise = Cesium.GeoJsonDataSource.load(url,option)
+ const promise = Cesium.GeoJsonDataSource.load(url, option)
- promise.then(dataSource=>{
+ promise.then(dataSource => {
console.log(dataSource)
- viewer.dataSources.add(dataSource);
+ viewer.dataSources.add(dataSource)
})
}
diff --git a/src/pages/page-web/projects/tsa.vue b/src/pages/page-web/projects/tsa.vue
index 1ad63e6..646bbe5 100644
--- a/src/pages/page-web/projects/tsa.vue
+++ b/src/pages/page-web/projects/tsa.vue
@@ -292,6 +292,7 @@
import { EHmsLevel } from '/@/types/enums'
import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
import { convertTimestampToDate, getDateFromTimestamp, isToday, setTodayTime } from '/@/utils/time'
+import { parseJsonFile } from '/@/utils/geo-utils'
let droneEntity: any
const { appContext } = getCurrentInstance()
diff --git a/src/utils/geo-utils.ts b/src/utils/geo-utils.ts
new file mode 100644
index 0000000..f950168
--- /dev/null
+++ b/src/utils/geo-utils.ts
@@ -0,0 +1,13 @@
+import axios from 'axios'
+
+export function parseJsonFile(url: string) {
+
+ return new Promise((resolve,reject)=>{
+ axios.get(url)
+ .then(function (response) {
+ console.log(response.data);
+ resolve(response.data)
+ })
+ })
+
+}
--
Gitblit v1.9.3