|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
<!-- 地图 -->
|
|
|
|
|
<div ref="vChartRef " :id="'mars3d-container_' + mapId" class="mars3d-container">
|
|
|
|
|
<!-- 航点航线 -->
|
|
|
|
|
<div v-if="props.airLineForm.airLineType == 'waypoint'" class="air-container">
|
|
|
|
|
<div v-if="props.airLineForm.airLineType == 'waypoint'" v-show="props.editMode != 'detail'" class="air-container">
|
|
|
|
|
<airPoint
|
|
|
|
|
:airInfo="lineInfo"
|
|
|
|
|
:editModel="props.editMode"
|
|
|
|
@ -44,6 +44,8 @@
|
|
|
|
|
:currentAirPoint="currentAirPoint"
|
|
|
|
|
:airPoints="airPoints"
|
|
|
|
|
@paramChagne="paramChagne"
|
|
|
|
|
@pointChange="pointChange"
|
|
|
|
|
@positionChange="positionChange"
|
|
|
|
|
></airPointConfig>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
@ -57,7 +59,7 @@
|
|
|
|
|
import * as mars3d from 'mars3d';
|
|
|
|
|
import { EventBus } from '@/utils/eventBus';
|
|
|
|
|
import { airPortStore } from '@/store/modules/airport';
|
|
|
|
|
|
|
|
|
|
import { airPointActions } from '../waylineConfig/actionConfig'
|
|
|
|
|
import 'mars3d-space';
|
|
|
|
|
|
|
|
|
|
import * as Cesium from 'mars3d-cesium';
|
|
|
|
@ -236,9 +238,15 @@
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
() => props.editMode,
|
|
|
|
|
(newVal, oldVal) => {
|
|
|
|
|
if (newVal == 'edit') {
|
|
|
|
|
handlerEditPolygonAirLine();
|
|
|
|
|
(newVal,oldVal)=>{
|
|
|
|
|
if(newVal == 'edit' || newVal == 'detail'){
|
|
|
|
|
// 判断航线类型进行加载编辑
|
|
|
|
|
if(props.airLineForm.airLineType == 'waypoint'){
|
|
|
|
|
handlerEditWaypointAirLine();
|
|
|
|
|
}else if(props.airLineForm.airLineType == 'mapping2d'){
|
|
|
|
|
handlerEditPolygonAirLine();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
@ -398,6 +406,7 @@
|
|
|
|
|
const checkPoint = (e) => {
|
|
|
|
|
currentAirPoint.value = e;
|
|
|
|
|
airPointConfigShow.value = true;
|
|
|
|
|
handlerDrawCamera(currentAirPoint.value);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////图层中心////////////////////////////////////////////
|
|
|
|
@ -435,8 +444,10 @@
|
|
|
|
|
|
|
|
|
|
let graphic = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // 清空所有数据
|
|
|
|
|
const exitDraw = () => {
|
|
|
|
|
// 清空数据
|
|
|
|
|
|
|
|
|
|
graphicLayer ? graphicLayer.clear() : null;
|
|
|
|
|
|
|
|
|
|
takeOffPointGraphicLayer ? takeOffPointGraphicLayer.clear() : null;
|
|
|
|
@ -492,6 +503,7 @@
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
initMap();
|
|
|
|
|
|
|
|
|
|
EventBus.on('closeTranslation', (val: any) => {
|
|
|
|
|
if (moveTool) {
|
|
|
|
|
moveTool.destroy();
|
|
|
|
@ -677,6 +689,7 @@
|
|
|
|
|
|
|
|
|
|
map.addLayer(graphicLayer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 参考起飞点图层
|
|
|
|
|
takeOffPointGraphicLayer = new mars3d.layer.GraphicLayer({
|
|
|
|
|
isAutoEditing: true,
|
|
|
|
@ -752,21 +765,30 @@
|
|
|
|
|
setAirportPosition();
|
|
|
|
|
}
|
|
|
|
|
if (props.uavTrack) {
|
|
|
|
|
setUAVPosition();
|
|
|
|
|
// setUAVPosition();
|
|
|
|
|
}
|
|
|
|
|
// 加载长光高清影像
|
|
|
|
|
// loadChangGuangLayer();
|
|
|
|
|
|
|
|
|
|
// 图层回显
|
|
|
|
|
if (props.editMode == 'edit') {
|
|
|
|
|
handlerEditPolygonAirLine();
|
|
|
|
|
if(props.editMode == 'edit' || props.editMode == 'detail'){
|
|
|
|
|
// 判断航线类型进行加载编辑
|
|
|
|
|
if(props.airLineForm.airLineType == 'waypoint'){
|
|
|
|
|
handlerEditWaypointAirLine();
|
|
|
|
|
}else if(props.airLineForm.airLineType == 'mapping2d'){
|
|
|
|
|
handlerEditPolygonAirLine();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 监测面区域回显
|
|
|
|
|
if (props.polygonArea) {
|
|
|
|
|
handlerReportPolygonAirLine();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
emits('mapOnLoad', map);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -1060,6 +1082,7 @@
|
|
|
|
|
};
|
|
|
|
|
// 绘制面航线
|
|
|
|
|
const handlerDrawPolygonLine = (lines) => {
|
|
|
|
|
|
|
|
|
|
// 设置首航点
|
|
|
|
|
let firstAirLinePoint = polygonGraphicLayer.getGraphicById('polygon-node-1');
|
|
|
|
|
if (firstAirLinePoint) {
|
|
|
|
@ -1394,42 +1417,46 @@
|
|
|
|
|
return edgeLengths;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 绘制文本标注
|
|
|
|
|
const handlerLoadtextLabelGraphicLayer = (info) => {
|
|
|
|
|
if (textLabelGraphicLayer == null) {
|
|
|
|
|
textLabelGraphicLayer = new mars3d.layer.GraphicLayer({
|
|
|
|
|
isAutoEditing: false,
|
|
|
|
|
});
|
|
|
|
|
map.addLayer(textLabelGraphicLayer);
|
|
|
|
|
} else {
|
|
|
|
|
textLabelGraphicLayer.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
info?.forEach((item, index) => {
|
|
|
|
|
const graphic = new mars3d.graphic.LabelEntity({
|
|
|
|
|
position: [item.center[0], item.center[1], 0],
|
|
|
|
|
style: {
|
|
|
|
|
text: item.length + 'm',
|
|
|
|
|
font_size: 15,
|
|
|
|
|
scale: 1,
|
|
|
|
|
font_family: '微软雅黑',
|
|
|
|
|
color: '#ffffff',
|
|
|
|
|
outline: true,
|
|
|
|
|
outlineColor: '#000000',
|
|
|
|
|
outlineWidth: 2,
|
|
|
|
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
|
|
|
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
|
|
|
|
|
visibleDepth: false,
|
|
|
|
|
clampToGround: true,
|
|
|
|
|
},
|
|
|
|
|
attr: { remark: '示例1' },
|
|
|
|
|
});
|
|
|
|
|
textLabelGraphicLayer.addGraphic(graphic);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
// 绘制文本标注
|
|
|
|
|
const handlerLoadtextLabelGraphicLayer = (info) => {
|
|
|
|
|
|
|
|
|
|
if(textLabelGraphicLayer == null){
|
|
|
|
|
textLabelGraphicLayer = new mars3d.layer.GraphicLayer({
|
|
|
|
|
isAutoEditing:false
|
|
|
|
|
})
|
|
|
|
|
map.addLayer(textLabelGraphicLayer);
|
|
|
|
|
}else{
|
|
|
|
|
textLabelGraphicLayer.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
info?.forEach((item,index)=>{
|
|
|
|
|
const graphic = new mars3d.graphic.LabelEntity({
|
|
|
|
|
position: [item.center[0], item.center[1], 0],
|
|
|
|
|
style: {
|
|
|
|
|
text: item.length+"m",
|
|
|
|
|
font_size: 15,
|
|
|
|
|
scale: 1,
|
|
|
|
|
font_family: "微软雅黑",
|
|
|
|
|
color: "#ffffff",
|
|
|
|
|
outline: true,
|
|
|
|
|
outlineColor: "#000000",
|
|
|
|
|
outlineWidth: 2,
|
|
|
|
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
|
|
|
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
|
|
|
|
|
visibleDepth: false,
|
|
|
|
|
clampToGround:true,
|
|
|
|
|
},
|
|
|
|
|
attr: { remark: "示例1" }
|
|
|
|
|
})
|
|
|
|
|
textLabelGraphicLayer.addGraphic(graphic)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 编辑回显航线
|
|
|
|
|
const handlerEditPolygonAirLine = async () => {
|
|
|
|
|
// 编辑回显面状航线
|
|
|
|
|
// 编辑回显航线
|
|
|
|
|
const handlerEditPolygonAirLine = async () => {
|
|
|
|
|
// 解析和设置参考起飞点
|
|
|
|
|
|
|
|
|
|
let takeoffArray = props.templateKmlConfig.missionConfig.takeOffRefPoint.split(',');
|
|
|
|
@ -1553,6 +1580,8 @@
|
|
|
|
|
|
|
|
|
|
// handlerDrawPolygonLine(line);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 监测区域面图层回显
|
|
|
|
|
const handlerReportPolygonAirLine = () => {
|
|
|
|
|
let geometry = {
|
|
|
|
@ -1696,7 +1725,7 @@
|
|
|
|
|
}
|
|
|
|
|
// 设置航线默认高度
|
|
|
|
|
let position = mars3d.LngLatPoint.fromCartesian(e.position);
|
|
|
|
|
let uuid = buildUUID();
|
|
|
|
|
let uuid = airPoints.value.length+1;
|
|
|
|
|
|
|
|
|
|
// 获取默认航线高度
|
|
|
|
|
let globalHeight = props.templateKmlConfig.Folder.globalHeight;
|
|
|
|
@ -1965,34 +1994,65 @@
|
|
|
|
|
const paramChagne = (info) => {
|
|
|
|
|
console.log('info1232', info);
|
|
|
|
|
|
|
|
|
|
// 判断事件类型
|
|
|
|
|
if (info.value == 'rotateYaw') {
|
|
|
|
|
// 飞行器偏航角
|
|
|
|
|
|
|
|
|
|
// 设置参数
|
|
|
|
|
currentAirPoint.value.aircraftHorizontalAngle =
|
|
|
|
|
info.config.actionActuatorFuncParam.aircraftHeading;
|
|
|
|
|
// 判断事件类型
|
|
|
|
|
|
|
|
|
|
if(info.value == 'rotateYaw'){ // 飞行器偏航角
|
|
|
|
|
// 设置参数
|
|
|
|
|
currentAirPoint.value.aircraftHorizontalAngle = info.config.actionActuatorFuncParam.aircraftHeading;
|
|
|
|
|
// 更新镜头
|
|
|
|
|
handlerDrawCamera(currentAirPoint.value);
|
|
|
|
|
// 更新航点
|
|
|
|
|
updateAirPoint(currentAirPoint.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(info.value == "gimbalRotate"){ // 云台俯仰角
|
|
|
|
|
// 设置参数
|
|
|
|
|
currentAirPoint.value.cameraVerticalAngle =info.config.actionActuatorFuncParam.gimbalPitchRotateAngle;
|
|
|
|
|
// 更新镜头
|
|
|
|
|
handlerDrawCamera(currentAirPoint.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(info.value == 'position'){ // 坐标高度改变
|
|
|
|
|
|
|
|
|
|
// 更新航点
|
|
|
|
|
updateAirPoint(currentAirPoint.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (info.value == 'gimbalRotate') {
|
|
|
|
|
// 云台俯仰角
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置参数
|
|
|
|
|
currentAirPoint.value.cameraVerticalAngle =
|
|
|
|
|
info.config.actionActuatorFuncParam.gimbalPitchRotateAngle;
|
|
|
|
|
// 更新镜头
|
|
|
|
|
handlerDrawCamera(currentAirPoint.value);
|
|
|
|
|
// 航点位置参数改变
|
|
|
|
|
const positionChange = () => {
|
|
|
|
|
|
|
|
|
|
// 更新航点
|
|
|
|
|
updateAirPoint(currentAirPoint.value);
|
|
|
|
|
|
|
|
|
|
// 更新镜头
|
|
|
|
|
handlerDrawCamera(currentAirPoint.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 切换航点
|
|
|
|
|
const pointChange = (id,type) => {
|
|
|
|
|
|
|
|
|
|
if(type == "next"){
|
|
|
|
|
if(id == airPoints.value.length){
|
|
|
|
|
currentAirPoint.value = airPoints.value[0];
|
|
|
|
|
}else{
|
|
|
|
|
currentAirPoint.value = airPoints.value[id];
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}else if(type == "last"){
|
|
|
|
|
if(id == 1){
|
|
|
|
|
currentAirPoint.value = airPoints.value[airPoints.value.length - 1];
|
|
|
|
|
}else{
|
|
|
|
|
currentAirPoint.value = airPoints.value[id - 2];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 更新镜头
|
|
|
|
|
handlerDrawCamera(currentAirPoint.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 事件处理
|
|
|
|
|
const updateCamera = () => {};
|
|
|
|
|
|
|
|
|
|
// 删除航点
|
|
|
|
|
const deleteAirPoint = (e) => {
|
|
|
|
@ -2033,7 +2093,141 @@
|
|
|
|
|
handlerDrawLine();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let stickGraphicLayer: mars3d.layer.GraphicLayer;
|
|
|
|
|
// 编辑回显航点航线
|
|
|
|
|
const handlerEditWaypointAirLine =async () => {
|
|
|
|
|
|
|
|
|
|
// 解析和设置参考起飞点
|
|
|
|
|
let takeoffArray = props.templateKmlConfig.missionConfig.takeOffRefPoint.split(",");
|
|
|
|
|
takeOffPointPosition.value = [parseFloat(takeoffArray[1]),parseFloat(takeoffArray[0]),parseFloat(takeoffArray[2])]
|
|
|
|
|
polygonAirForm.value.startingPoint = [parseFloat(takeoffArray[1]),parseFloat(takeoffArray[0]),parseFloat(takeoffArray[2])];
|
|
|
|
|
takeOffPointGraphicLayer ? takeOffPointGraphicLayer.clear() : null;
|
|
|
|
|
let startFlyGraphic = new mars3d.graphic.BillboardEntity({
|
|
|
|
|
position:takeOffPointPosition.value,
|
|
|
|
|
style: {
|
|
|
|
|
image: '/map/start.png',
|
|
|
|
|
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
|
|
|
|
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
|
|
|
|
|
label: {
|
|
|
|
|
text: '参考起飞点',
|
|
|
|
|
font_size: 16,
|
|
|
|
|
color: '#ffffff',
|
|
|
|
|
outline: true,
|
|
|
|
|
outlineColor: '#000000',
|
|
|
|
|
pixelOffsetY: -50,
|
|
|
|
|
},
|
|
|
|
|
clampToGround: true,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
takeOffPointGraphicLayer.addGraphic(startFlyGraphic);
|
|
|
|
|
|
|
|
|
|
// 处理和加载航点
|
|
|
|
|
if(props.waylineWpmlConfig.Folder.Placemark.length > 0){
|
|
|
|
|
props.waylineWpmlConfig.Folder.Placemark?.forEach((item, index) => {
|
|
|
|
|
let coordinate = item.Point.coordinates.split(',');
|
|
|
|
|
// 处理航点
|
|
|
|
|
let airPointInfo = {
|
|
|
|
|
id: item.index+1,
|
|
|
|
|
lng: coordinate[0],
|
|
|
|
|
lat: coordinate[1],
|
|
|
|
|
alt: item.executeHeight,
|
|
|
|
|
aircraftHorizontalAngle: 0,
|
|
|
|
|
cameraHorizontalAngle: 0,
|
|
|
|
|
cameraVerticalAngle: 0,
|
|
|
|
|
focalLength: 24,
|
|
|
|
|
actions:[]
|
|
|
|
|
};
|
|
|
|
|
// 处理动作
|
|
|
|
|
item.actionGroup.action?.forEach((action,idx)=>{
|
|
|
|
|
let actionConfig = JSON.parse(JSON.stringify(airPointActions[action.actionActuatorFunc]))
|
|
|
|
|
actionConfig.config = JSON.parse(JSON.stringify(action));
|
|
|
|
|
|
|
|
|
|
console.log("123",action);
|
|
|
|
|
|
|
|
|
|
// 处理航偏角和俯仰角
|
|
|
|
|
if(action.actionActuatorFunc == 'rotateYaw'){
|
|
|
|
|
airPointInfo.aircraftHorizontalAngle = action.actionActuatorFuncParam.aircraftHeading
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(action.actionActuatorFunc == 'gimbalRotate'){
|
|
|
|
|
airPointInfo.cameraVerticalAngle = action.actionActuatorFuncParam.gimbalPitchRotateAngle
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
airPointInfo.actions.push(actionConfig);
|
|
|
|
|
})
|
|
|
|
|
airPoints.value?.push(airPointInfo);
|
|
|
|
|
// 回显航点
|
|
|
|
|
displayWaypointAirLine(airPointInfo);
|
|
|
|
|
});
|
|
|
|
|
// 更新航线
|
|
|
|
|
handlerDrawLine();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 回显航点航线信息
|
|
|
|
|
const displayWaypointAirLine = (position)=>{
|
|
|
|
|
console.log("position123",position);
|
|
|
|
|
|
|
|
|
|
// 设置航线默认高度
|
|
|
|
|
let uuid = buildUUID();
|
|
|
|
|
|
|
|
|
|
// 获取默认航线高度
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 航点三维模型
|
|
|
|
|
let uavAngleGraphic = new mars3d.graphic.ModelEntity({
|
|
|
|
|
id:position.id,
|
|
|
|
|
name: "航向",
|
|
|
|
|
position: [position.lng, position.lat, position.alt],
|
|
|
|
|
style: {
|
|
|
|
|
url: "/map/uav-angle.gltf",
|
|
|
|
|
scale: 0.1,
|
|
|
|
|
heading: position.aircraftHorizontalAngle + 90,
|
|
|
|
|
distanceDisplayCondition: true,
|
|
|
|
|
distanceDisplayCondition_near: 0,
|
|
|
|
|
distanceDisplayPoint: {
|
|
|
|
|
color: "#00ff00",
|
|
|
|
|
pixelSize: 8
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
graphicLayer.addGraphic(uavAngleGraphic)
|
|
|
|
|
|
|
|
|
|
// 地面投影点
|
|
|
|
|
let stickGraphic = new mars3d.graphic.PointEntity({
|
|
|
|
|
id: 'stick' + position.id,
|
|
|
|
|
position: [position.lng, position.lat],
|
|
|
|
|
style: {
|
|
|
|
|
color: '#f5f5f5',
|
|
|
|
|
pixelSize: 8,
|
|
|
|
|
outline: true,
|
|
|
|
|
outlineColor: '#f5f5f5',
|
|
|
|
|
outlineWidth: 1,
|
|
|
|
|
clampToGround: true,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
stickGroundPointLayer.addGraphic(stickGraphic);
|
|
|
|
|
|
|
|
|
|
// 航点 投影点连接线
|
|
|
|
|
let lineGraphic = new mars3d.graphic.PolylineEntity({
|
|
|
|
|
id: 'line' + position.id,
|
|
|
|
|
positions: [
|
|
|
|
|
[position.lng, position.lat,position.alt],
|
|
|
|
|
[position.lng, position.lat, 0],
|
|
|
|
|
],
|
|
|
|
|
style: {
|
|
|
|
|
color: '#f5f5f5',
|
|
|
|
|
width: 1,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
lineGroundPointLayer.addGraphic(lineGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let stickGraphicLayer: mars3d.layer.GraphicLayer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 飞行到此处
|
|
|
|
|
const flyToThere = (e) => {
|
|
|
|
@ -2179,7 +2373,6 @@
|
|
|
|
|
|
|
|
|
|
// 移动贴地点
|
|
|
|
|
const stickGraphicMove = (e) => {
|
|
|
|
|
return null;
|
|
|
|
|
let uav = uavGraphicLayer.getGraphicById('flytothere-uav');
|
|
|
|
|
|
|
|
|
|
if (uav) {
|
|
|
|
@ -2541,6 +2734,7 @@
|
|
|
|
|
};
|
|
|
|
|
// 设置无人机轨迹
|
|
|
|
|
const setUAVPosition = () => {
|
|
|
|
|
|
|
|
|
|
let point = graphicLayer.getGraphicById('set-uav');
|
|
|
|
|
const position = [props.uavTrack.longitude, props.uavTrack.latitude, props.uavTrack.height];
|
|
|
|
|
// 更新航点
|
|
|
|
@ -2704,8 +2898,16 @@
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////动作处理//////////////////////////////////////
|
|
|
|
|
const addAction = (action) => {
|
|
|
|
|
|
|
|
|
|
// 需要特殊处理拍照动作
|
|
|
|
|
if(action.value == "takePhoto"){
|
|
|
|
|
currentAirPoint.value.actions.push(JSON.parse(JSON.stringify(airPointActions['focus'])));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 当前航点添加动作
|
|
|
|
|
currentAirPoint.value.actions.push(JSON.parse(JSON.stringify(action)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|