From 462af9b826c8de88c3aa1586591897ddf6f044eb Mon Sep 17 00:00:00 2001
From: jihongshun <1151753686@qq.com>
Date: 星期四, 14 八月 2025 17:19:22 +0800
Subject: [PATCH] 编辑航线模板、编辑航线时、航线库模拟时,可查询、显示每一个"巡检点"关联的无人机空中点杆塔巡检点的距离值、载荷方位俯仰及焦距值。

---
 src/views/system/project/components/addPorjectDialog.vue |  467 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 444 insertions(+), 23 deletions(-)

diff --git a/src/views/system/project/components/addPorjectDialog.vue b/src/views/system/project/components/addPorjectDialog.vue
index cf5606f..9a082c5 100644
--- a/src/views/system/project/components/addPorjectDialog.vue
+++ b/src/views/system/project/components/addPorjectDialog.vue
@@ -10,12 +10,12 @@
           <el-col :span=6>
               <el-card class="noScroll">
                 <div class="chooseModel">
-                  <!-- <el-button type="primary" @click='chooseModel'>娣诲姞璁惧</el-button> -->
                   <div class="fontJust">璁惧鍒楄〃</div>
                    <el-button @click="addDevice"> 鏂板</el-button>
                   <el-table
                     :data="tableData"
                     max-height = '180'
+                    :row-key="getRowKeys"
                     style="width: 100%">
                     <el-table-column
                       prop="deviceName"
@@ -23,15 +23,16 @@
                       width="150">
                     </el-table-column>
                     <el-table-column
-                      prop="muban"
+                      prop="mode"
                       label="妯℃澘"
-                      width="150">
+                      width="120">
                     </el-table-column>
                     <el-table-column
                       fixed="right"
                       label="鎿嶄綔"
-                      width="100">
+                      width="130">
                       <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="chooseModel(scope.row)">妯℃澘</el-button>
                         <el-button type="text" size="small" @click="flyToLocal(scope.row)">瀹氫綅</el-button>
                         <el-button type="text" size="small" @click="deleteData(scope.row)">绉婚櫎</el-button>
                       </template>
@@ -45,9 +46,9 @@
                   <div class="fontJust">宸℃鐐圭洰褰�</div>
                   <el-tree
                     class="filter-tree"
+                    node-key="id"
                     :data="treeData"
                     :props="defaultProps"
-                    draggable  
                     default-expand-all
                     ref="tree">
                   </el-tree>
@@ -63,16 +64,22 @@
         <el-button type="primary" @click="submit()" >鐢熸垚鑸嚎浠诲姟</el-button>
       </span>
     </el-dialog>
-     <chooseDeviceDialog v-if="showModel" @cancel ='cancel' @dealChooseArr="dealChooseArr" ></chooseDeviceDialog>
+     <chooseDeviceDialog v-if="showDevice" @cancel ='cancel' @dealChooseArr="dealChooseArr" ></chooseDeviceDialog>
+     <chooseModelDialog v-if="showModel" @cancelModel ='cancelModel' @receiveModel="receiveModel" :deviceId="deviceId"></chooseModelDialog>
   </div>
 </template>
 <script>
 import CesiumMap from "../../../../utils/components/cesium-map.vue";
 import chooseDeviceDialog from './chooseDeviceDialog.vue';
+import chooseModelDialog from './chooseModelDialog.vue';
+import { obtainRealData ,buildKmz} from "@/api/system/template"
+let rotationAngle = Cesium.Math.toRadians(0)
+let lastConnectPolyline 
 export  default{
   components: {
     CesiumMap,
-    chooseDeviceDialog
+    chooseDeviceDialog,
+    chooseModelDialog
   },
   data(){
     return{
@@ -83,21 +90,21 @@
           children: 'children',
           label: 'label'
         },
+        showDevice:false,
+        multipleSelection: [],
         showModel:false,
-        multipleSelection: []
+        deviceId:null
     }
   },
   methods:{
     handleClose(){
-      console.log("close")
       this.dialogVisible = false
       this.$emit('close')
     },
     flyToLocal(row){
-      console.log(row)
-      console.log(viewer)
-       const position = Cesium.Cartesian3.fromDegrees(row.longitude,row.latitude, row.altitude);
-
+       const position = Cesium.Cartesian3.fromDegrees(row.longitude,row.latitude, row.deviceHeight);
+      // rotationAngle  = Cesium.Math.toRadians(row.face)  ||  Cesium.Math.toRadians(0)
+      rotationAngle  = Cesium.Math.toRadians(row.face)  ||  Cesium.Math.toRadians(0)
       // 璁剧疆妯″瀷鏂瑰悜锛堝彲閫夛級
       const heading = Cesium.Math.toRadians(row.face); // 鏈濅笢鍗楁柟鍚�
       const pitch = 0;
@@ -113,19 +120,35 @@
         position: position,
         orientation: orientation,
         model: {
-          uri: "http://192.168.1.5:9000/tower/2025/07/01/tower_20250701145739A004.glb", // 鏇挎崲鎴愪綘鐨勬ā鍨嬭矾寰�
-          scale: 1000,
+          uri: row?.ardTowerModel.modelRoute, // 鏇挎崲鎴愪綘鐨勬ā鍨嬭矾寰�
+          scale: 1,
         },
+        label: {
+          show: true,
+          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+          horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+          font: '28px Helvetica',
+          outlineColor: Cesium.Color.BLUE,
+          outlineWidth: 3,
+          fillColor: Cesium.Color.fromCssColorString('#FFFFFF'), //44c3cc
+          text: row.deviceName,
+          style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+          pixelOffset: new Cesium.Cartesian2(0.0, -56.0),
+          scaleByDistance: new Cesium.NearFarScalar(1000, 0.6, 10000, 0.4),
+          pixelOffsetScaleByDistance: new Cesium.NearFarScalar(1000, 0.4, 10000, 0.4),
+          disableDepthTestDistance: 100000000
+        }
       });
       console.log(entity)
       // 椋炶鍒版ā鍨嬩綅缃�
+      console.log(this.treeData)
       viewer.flyTo(entity)
     },
     addDevice(){
-      this.showModel = true
+      this.showDevice = true
     },
     cancel(){
-      this.showModel = false
+      this.showDevice = false
     },
     hasSameId(array1, array2) {
       const ids1 = new Set(array1.map(item => item.id));
@@ -145,29 +168,427 @@
             type: 'warning'
           })
         }
-        this.tableData = this.tableData.concat(arr)
+        this.tableData = this.treeData.concat(arr)
       }
       const dealTreeData =this.dealTee()
       this.treeData = dealTreeData
-      console.log(this.treeData)
     },
     dealTee(){
+      console.log(this.tableData)
      return  this.tableData.map(item => ({
         ...item,
         label: item.deviceName,
-        children: []
       }));
     },
     deleteData(row){
+      console.log(row)
       // 鎵惧埌 id 涓� "1" 鐨勫厓绱犵储寮�
       const index = this.tableData.findIndex(item => item.id === row.id);
-
       // 濡傛灉鎵惧埌浜嗭紝鍒犻櫎璇ュ厓绱�
       if (index !== -1) {
         this.tableData.splice(index, 1);
       }
-      const dealTreeData = this.dealTee()
-      this.treeData = dealTreeData
+      const indexTree = this.treeData.findIndex(item => item.id === row.id);
+      // 濡傛灉鎵惧埌浜嗭紝鍒犻櫎璇ュ厓绱�
+      if (index !== -1) {
+        this.treeData.splice(indexTree, 1);
+      }
+      if(this.treeData?.length >=2 && this.treeData[0]?.children?.length > 0 && this.treeData[1]?.children?.length > 0 ) {
+          this.dealAddHeight()
+      } else if(this.treeData?.length ==1) {
+        this.treeData.map((device,index) => {
+          // 纭繚璁惧鏈塩hildren鏁扮粍
+          if(index == 0) {
+            //绗竴涓暟鎹�
+            if (device.children && Array.isArray(device.children) && device.children.length > 0) {
+                // 鑾峰彇鏈�鍚庝竴涓┖涓偣
+                const lastChild = device.children[device.children.length - 1];
+                const firstChild = device.children[0];
+                // 娣辨嫹璐濇渶鍚庝竴涓厓绱狅紙鍖呮嫭宓屽鐨刢hildren锛�
+                const newChildJson = JSON.parse(JSON.stringify(lastChild));
+                // 娣辨嫹璐濇渶涓�涓�涓厓绱狅紙鍖呮嫭宓屽鐨刢hildren锛�
+                const firstChildJson = JSON.parse(JSON.stringify(firstChild));
+
+                if(newChildJson && newChildJson.label.includes('鍔犻珮')){
+                  device.children?.pop(newChild);
+                }else if(firstChildJson && firstChildJson.label.includes('鍔犻珮')) {
+                    device.children?.shift(firstChildJson);
+                }
+                // 娣诲姞鍒癱hildren鏁扮粍鏈熬
+            }
+          }
+        })
+      }
+      const entitiesToRemove = [];
+      viewer.entities.values.forEach(entity => {
+        if (entity.id && entity.id.includes(row.id)) {
+          entitiesToRemove.push(entity.id);
+        }
+      });
+      entitiesToRemove.forEach(id => {
+        viewer.entities.removeById(id);
+      });
+      this.drawConnectionsWithLabels(this.treeData)
+      // console.log(this.tableData)
+      console.log(this.treeData)
+      // const dealTreeData = this.dealTee()
+      // console.log(dealTreeData)
+      // this.treeData = dealTreeData
+      // this.drawConnectionsWithLabels(this.treeData)
+    },
+    chooseModel(row){
+      this.deviceId = row.id
+      this.showModel = true
+    },
+    cancelModel(){
+      this.showModel = false
+    },
+    receiveModel(obj){
+      //deal閫昏緫
+      let flightTemplateId =obj.modelObj.id
+      let deviceId = obj.deviceId
+      this.dealTableTemplate(obj)
+      // let 
+      obtainRealData(flightTemplateId,deviceId).then(res=>{
+        console.log(res)
+        let treeDealData = this.transformFlightData(res.data?.coordinateSystemVoS || [])
+        console.log(treeDealData)
+        this.dealTreeMerge(obj,treeDealData)
+        
+        this.rotateAllPoints(this.treeData || [],res.data.longitude,res.data.latitude,res.data.height)
+        console.log(this.treeData)
+        if(this.treeData?.length >=2 && this.treeData[0]?.children?.length > 0 && this.treeData[1]?.children?.length > 0 ) {
+            this.dealAddHeight()
+        }
+        console.log(this.treeData)
+        this.drawConnectionsWithLabels(this.treeData)
+      })
+      // this.dealTreeMerge(obj)
+    },
+    dealAddHeight(){
+      let currentLength = this.treeData.filter(item=>item.children)?.length || 0
+      console.log(this.treeData)
+      console.log(currentLength)
+      this.treeData.map((device,index) => {
+          // 纭繚璁惧鏈塩hildren鏁扮粍
+          if(index == 0) {
+            //绗竴涓暟鎹�
+            if (device.children && Array.isArray(device.children) && device.children.length > 0) {
+                // 鑾峰彇鏈�鍚庝竴涓┖涓偣
+                const lastChild = device.children[device.children.length - 1];
+                // 娣辨嫹璐濇渶鍚庝竴涓厓绱狅紙鍖呮嫭宓屽鐨刢hildren锛�
+                const newChild = JSON.parse(JSON.stringify(lastChild));
+                if(newChild.label.includes('鍔犻珮')) {
+
+                }else {
+                  newChild.label = newChild.label + '-鍔犻珮'
+                  // 楂樺害澧炲姞20
+                  // newChild.height += 20;
+                  //濉旈珮 - 楂樺害  + 寰�涓婇澶氬皯绫�
+                  newChild.height += (device.ardTowerModel?.modelHeight  - newChild.height +  20) ;
+                  console.log('push11111111111111')
+                  // 娣诲姞鍒癱hildren鏁扮粍鏈熬
+                  device.children.push(newChild);
+                }
+            }
+          }
+          else if(index == currentLength -1) {
+            if (device.children && Array.isArray(device.children) && device.children.length > 0) {
+                // 鑾峰彇鏈�鍚庝竴涓┖涓偣
+                const lastChild = device.children[0];
+                // 娣辨嫹璐濇渶涓�涓�涓厓绱狅紙鍖呮嫭宓屽鐨刢hildren锛�
+                const newChild = JSON.parse(JSON.stringify(lastChild));
+                if(newChild.label.includes('鍔犻珮')) {
+                }else {
+                  newChild.label = newChild.label + '-鍔犻珮绗竴涓偣'
+                  newChild.height += (device.ardTowerModel?.modelHeight  - newChild.height +  20) ;
+                  // 娣诲姞鍒癱hildren鏁扮粍鏈熬
+                  device.children.unshift(newChild);
+                }
+                
+            }
+          } else {
+            if (device.children && Array.isArray(device.children) && device.children.length > 0) {
+                // 鑾峰彇鏈�鍚庝竴涓┖涓偣
+                const firstChild = device.children[0];
+                const lastChild = device.children[device.children.length - 1];
+                // 娣辨嫹璐濇渶涓�涓�涓厓绱狅紙鍖呮嫭宓屽鐨刢hildren锛�
+                const newFirstChild = JSON.parse(JSON.stringify(firstChild));
+                const newLastChildChild = JSON.parse(JSON.stringify(lastChild));
+                //楂樺害澧炲姞20
+                if(newFirstChild.label.includes('鍔犻珮')) {
+                }else {
+                    newFirstChild.label = newFirstChild.label + '-鍔犻珮'
+                    newFirstChild.height += (device.ardTowerModel?.modelHeight  - newFirstChild.height +  20) ;
+                    device.children.unshift(firstChild);
+                }
+                if(newLastChildChild.label.includes('鍔犻珮')) {
+                }else {
+                    newLastChildChild.label = newLastChildChild.label + '-鍔犻珮'
+                    newLastChildChild.height += (device.ardTowerModel?.modelHeight  - newLastChildChild.height +  20) ;
+                    device.children.push(newLastChildChild);
+                }
+            }
+          }
+      })
+    },
+    //杩斿洖鏁版嵁杞崲鏍戠粨鏋�
+    transformFlightData(data) {
+      console.log(data)
+      const result = [];
+
+      data.forEach(item => {
+        // 鎵惧埌绗竴涓� groundPoint锛屼綔涓轰唬琛�
+        const groundPoint = item.groundPointVo?.[0];
+
+        // 鐢熸垚 children 鑺傜偣
+        const children = groundPoint ? [{
+          id: groundPoint.id,
+          label: groundPoint.targetName,
+          longitude: groundPoint.longitude,
+          latitude: groundPoint.latitude,
+          height: groundPoint.height
+        }] : [];
+
+        // 鐢熸垚绌轰腑鐐�
+        result.push({
+          id: item.id,
+          label: item.targetName,
+          longitude: item.longitude,
+          latitude: item.latitude,
+          height: item.altitude,
+          children
+        });
+      });
+
+      return result;
+    },
+    dealTableTemplate(obj){
+      const targetTableData = this.tableData.find(item => item.id === obj.deviceId)
+      const targetTreeData = this.treeData.find(item => item.id === obj.deviceId)
+      if (targetTableData) {
+        this.$set(targetTableData, 'mode', obj.modelObj.templateName) // 鉁� Vue2 闇�瑕佷娇鐢� $set 浠ョ‘淇濆搷搴斿紡
+      }
+      if (targetTreeData) {
+        this.$set(targetTreeData, 'mode', obj.modelObj.templateName) // 鉁� Vue2 闇�瑕佷娇鐢� $set 浠ョ‘淇濆搷搴斿紡
+      }
+    },
+    dealTreeMerge(obj,data){
+      this.treeData.forEach(item => {
+        if(item.id == obj.deviceId) {
+          // 鏇挎崲绗竴灞傛瘡涓妭鐐圭殑 children
+          this.$set(item, 'children', JSON.parse(JSON.stringify(data)));
+        }
+      });
+    },
+    generateId() {
+      return 'id_' + Math.random().toString(36).substring(2, 10);
+    },
+    drawConnectionsWithLabels(devices) {
+      if(lastConnectPolyline) {
+        viewer.entities.remove(lastConnectPolyline)
+        lastConnectPolyline = null
+      }
+        // 鐩存帴鎿嶄綔EntityCollection锛堟帹鑽愶級
+      const entitiesToRemove = [];
+      viewer.entities.values.forEach(entity => {
+        if (entity.id && entity.id.includes(this.deviceId)) {
+          entitiesToRemove.push(entity.id);
+        }
+      });
+
+      entitiesToRemove.forEach(id => {
+        viewer.entities.removeById(id);
+      });
+      const airPoints = [];
+      console.log(devices)
+      devices.forEach(device => {
+        if (!Array.isArray(device.children)) return;
+        device.children.forEach(airPoint => {
+          // 绌轰腑鐐逛綅缃�
+          const airPos = Cesium.Cartesian3.fromDegrees(
+            airPoint.longitude,
+            airPoint.latitude,
+            airPoint.height
+          );
+
+          // 鉁� 娣诲姞绌轰腑鐐瑰疄浣撳拰 label
+          viewer.entities.add({
+            position: airPos,
+            id:device.id +'airpoint' + this.generateId(),
+            point: {
+              pixelSize: 6,
+              color: Cesium.Color.YELLOW
+            },
+            label: {
+              text: airPoint.label || '',
+              font: '14px sans-serif',
+              fillColor: Cesium.Color.YELLOW,
+              style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+              outlineColor: Cesium.Color.BLACK,
+              outlineWidth: 2,
+              verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+              pixelOffset: new Cesium.Cartesian2(0, -12)
+            }
+          });
+
+          airPoints.push(airPos);
+
+          // 閬嶅巻鍦伴潰鐐癸紙瀛愰」锛�
+          if (Array.isArray(airPoint.children)) {
+            airPoint.children.forEach(groundPoint => {
+              const groundPos = Cesium.Cartesian3.fromDegrees(
+                groundPoint.longitude,
+                groundPoint.latitude,
+                groundPoint.height
+              );
+
+              // 鉁� 娣诲姞鍦伴潰鐐瑰疄浣撳拰 label
+              viewer.entities.add({
+                id:device.id +'groundpoint' + this.generateId(),
+                position: groundPos,
+                point: {
+                  pixelSize: 6,
+                  color: Cesium.Color.BLUE
+                },
+                label: {
+                  text: groundPoint.label || '',
+                  font: '14px sans-serif',
+                  fillColor: Cesium.Color.WHITE,
+                  style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+                  outlineColor: Cesium.Color.BLACK,
+                  outlineWidth: 2,
+                  verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+                  pixelOffset: new Cesium.Cartesian2(0, -12)
+                }
+              });
+
+              // 鉁� 钃濊壊铏氱嚎杩炴帴锛氱┖涓偣 鉃� 鍦伴潰鐐�
+              viewer.entities.add({
+                id:device.id +'polyline' + this.generateId(),
+                polyline: {
+                  positions: [airPos, groundPos],
+                  width: 2,
+                  material: new Cesium.PolylineDashMaterialProperty({
+                    color: Cesium.Color.BLUE,
+                    dashLength: 8
+                  })
+                }
+              });
+            });
+          }
+        });
+      });
+      console.log(airPoints)
+      // 鉁� 榛勮壊瀹炵嚎杩炴帴鎵�鏈夌┖涓偣
+      if (airPoints.length > 1) {
+        lastConnectPolyline = viewer.entities.add({
+          polyline: {
+            positions: airPoints,
+            width: 3,
+            material: Cesium.Color.YELLOW
+          }
+        });
+      }
+    },
+    rotateAllPoints(dataList,towerLongitude,towerLatitude,towerhHight) {
+      return dataList.map(item => {
+        if(!item.isDeal) {
+          const towerPoint = Cesium.Cartesian3.fromDegrees(towerLongitude, towerLatitude, towerhHight);
+          const newGround = {
+            ...item,
+          };
+          if(item.id == this.deviceId ){
+            item.isDeal = true
+          } 
+          // 澶勭悊瀛愮┖涓偣
+          newGround.children = item.children?.map(child => {
+            const airPoint = Cesium.Cartesian3.fromDegrees(child.longitude, child.latitude, child.height);
+            const rotatedAirPoint = this.rotateAroundPoint( airPoint,towerPoint, rotationAngle);
+            const rotatedAirCarto = Cesium.Cartographic.fromCartesian(rotatedAirPoint);
+            child.longitude = Cesium.Math.toDegrees(rotatedAirCarto.longitude)
+            child.latitude = Cesium.Math.toDegrees(rotatedAirCarto.latitude)
+            child.height = rotatedAirCarto.height
+            child.children = child.children?.map(sonChild => {
+              const groundPoint = Cesium.Cartesian3.fromDegrees(sonChild.longitude, sonChild.latitude, sonChild.height);
+              const newGroundPoint = this.rotateAroundPoint( groundPoint,towerPoint, rotationAngle);
+              const newGroundCarto = Cesium.Cartographic.fromCartesian(newGroundPoint);
+              return {
+                ...sonChild,
+                longitude: Cesium.Math.toDegrees(newGroundCarto.longitude),
+                latitude: Cesium.Math.toDegrees(newGroundCarto.latitude),
+                height: newGroundCarto.height
+              };
+            });
+          });
+          console.log(newGround.children)
+          return newGround;
+        }
+         
+      });
+    },
+    //聽璁$畻鐐笰缁曠偣B閫嗘椂閽堟棆杞寚瀹氳搴﹀悗鐨勬柊浣嶇疆
+    //  绌轰腑鐐规垨鑰呭湴闈㈢偣绗涘崱灏斿潗鏍� 濉旂殑绗涘崱灏斿潗鏍�    濉旂殑鏈濆悜鍊�
+    rotateAroundPoint(startPoint,pivotPoint,rotationAngle) {
+      console.log(rotationAngle)
+      //聽鍒涘缓涓�涓粠B鐐瑰埌鏈湴鍧愭爣绯荤殑杞崲鐭╅樀锛堜笢鏂瑰悜涓篨杞达紝鍖楁柟鍚戜负Y杞达紝鍨傜洿鏂瑰悜涓篫杞达級
+     const transformationMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(pivotPoint);
+      //聽鑾峰彇涓栫晫鍧愭爣绯诲埌鏈湴鍧愭爣绯荤殑杞崲鐭╅樀
+     const inverseTransformationMatrix = Cesium.Matrix4.inverse(transformationMatrix,new Cesium.Matrix4());
+      //聽灏咥鐐硅浆鎹㈠埌灞�閮ㄥ潗鏍囩郴涓�
+     const localStartPoint = Cesium.Matrix4.multiplyByPoint(inverseTransformationMatrix, startPoint,new Cesium.Cartesian3());
+      //聽璁$畻A鐐瑰湪灞�閮ㄥ潗鏍囩郴涓�嗘椂閽堟棆杞寚瀹氳搴﹀悗鐨勬柊浣嶇疆
+     const rotatedX = localStartPoint.x * Math.cos(rotationAngle) + localStartPoint.y * Math.sin(rotationAngle);
+     const rotatedY = localStartPoint.y * Math.cos(rotationAngle) - localStartPoint.x * Math.sin(rotationAngle);
+     const rotatedZ = localStartPoint.z; //聽Z杞村潗鏍囦繚鎸佷笉鍙�
+      //聽灏嗘棆杞悗鐨勫眬閮ㄥ潗鏍囪浆鎹㈠洖涓栫晫鍧愭爣绯�
+     return Cesium.Matrix4.multiplyByPoint(transformationMatrix,聽new聽Cesium.Cartesian3(rotatedX,聽rotatedY,聽rotatedZ),聽new聽Cesium.Cartesian3());
+    },
+    getRowKeys(row){
+      console.log(row)
+      return row.id +this.generateId()
+    },
+    submit(){
+      console.log(this.treeData)
+
+      const routePointList = [];
+
+      this.treeData.forEach(device => {
+        device.children.forEach((airPoint, index) => {
+          routePointList.push({
+            routePointIndex: routePointList.length,
+            longitude: airPoint.longitude,
+            latitude: airPoint.latitude,
+            height: airPoint.height,
+            isStartAndEndPoint: false,
+            coordinatePointReq: {
+                height: airPoint.children[0].height,
+                latitude:airPoint.children[0].latitude,
+                longitude: airPoint.children[0].longitude
+              }
+          });
+        });
+      });
+
+      // 鏍囪棣栧熬涓� true
+      if (routePointList.length > 0) {
+        routePointList[0].isStartAndEndPoint = true;
+        routePointList[routePointList.length - 1].isStartAndEndPoint = true;
+      }
+
+      console.log(routePointList);
+      let params  = {
+        routePointList:routePointList
+      }
+      console.log('鐢熸垚鑸嚎')
+      buildKmz(params).then(res=>{
+        if(res.code == 200) {
+           this.$message({
+              message: '鐢熸垚鑸嚎鎴愬姛',
+              type: 'success'
+            })
+        }
+      })
     }
   }
 }

--
Gitblit v1.9.3