jihongshun
10 天以前 417c46988366e8c11f54230345f2e6840a0025f7
src/views/system/shootPoint/components/shootPointDialog.vue
@@ -51,22 +51,28 @@
  </div>
</template>
<script>
import { compileToFunctions } from "vue-template-compiler";
import CesiumMap from "../../../../utils/components/cesium-map.vue";
import InitMap from "../../../../utils/components/init-map.vue";
import ChooseModelDialog from './chooseModelDialog.vue';
import { addPoint} from "@/api/system/template"
 let globalon  = 0
import { addPoint , getPointInfo} from "@/api/system/template"
let globalon  = 0
let globalat = 0
let towerHeight = 47.47
const centerCartesian = Cesium.Cartesian3.fromDegrees(globalon,globalat , 0)
//塔的朝向算法所用到的 旋转度数
let rotationAngle = Cesium.Math.toRadians(0)
let relativeData
export default{
  name:'shootPointDialog',
   components: {
    CesiumMap,
    ChooseModelDialog,
    InitMap
  },
  props: {
    templateId: {
      type: String,
      defaule: null
    }
  },
  data(){
    return{
@@ -90,8 +96,84 @@
    }
  },
  mounted(){
    if(this.templateId) {
      //预览逻辑
      getPointInfo(this.templateId).then(res=>{
        if(res.code == 200 ) {
          this.getRowData(res.data)
          let drawArr = this.convertToTree(res.data.ardListWayPointsLS)
          setTimeout(() => {
            //渲染时间问题 加个延时器
            this.drawLines(drawArr)
          }, 500);
        }
      })
    }
  },  
  methods:{
    convertToTree(data) {
      return data.map((item, index) => {
        const parentId = 'air_' + index;
        return {
          id: parentId,
          label: item.targetName,
          longitude: item.longitude,
          latitude: item.latitude,
          height: item.altitude,
          children: (item.ardGroundPoint || []).map((g, i) => {
            return {
              id: parentId + '_ground_' + i,
              label: g.targetName,
              longitude: g.longitude,
              latitude: g.latitude,
              height: g.height
            }
          })
        }
      });
    },
    drawLines(treeData) {
      console.log(treeData)
      console.log(window)
      console.log(window.viewerM)
      let viewer = window.viewerM
      // 收集空中点位置
      const airPositions = treeData.map(point => {
        return Cesium.Cartesian3.fromDegrees(
          point.longitude,
          point.latitude,
          point.height
        );
      });
      // 1. 空中点之间用黄色实线连接
      viewer.entities.add({
        polyline: {
          positions: airPositions,
          width: 2,
          material: Cesium.Color.YELLOW
        }
      });
      // 2. 每个空中点与地面点用蓝色虚线连接
      treeData.forEach(point => {
        const airPos = Cesium.Cartesian3.fromDegrees(point.longitude, point.latitude, point.height);
        point.children.forEach(child => {
          const groundPos = Cesium.Cartesian3.fromDegrees(child.longitude, child.latitude, child.height);
          viewer.entities.add({
            polyline: {
              positions: [airPos, groundPos],
              width: 1,
              material: new Cesium.PolylineDashMaterialProperty({
                color: Cesium.Color.BLUE,
                dashLength: 8
              })
            }
          });
        });
      });
    },
    addPoint(viewer, position, color, label) {
      viewer.entities.add({
        name: label,
@@ -170,6 +252,7 @@
        return newGround;
      });
    },
    //合并逻辑  将附近n米范围内的点合并 并且处理成数据
    mergePoint(arr,mergeNumber,viewer){
      this.treeData = arr
      const result = this.replaceCloseChildrenWithHighestPoint(this.treeData,mergeNumber);
@@ -359,10 +442,14 @@
      console.log(row)
      this.modelName = row.modelName
      this.templateType = row.modelType
      if(this.templateId){
        this.form.templateName = row.templateName || ''
      }
      this.chooseModelId = row.id
      towerHeight = row.towerHeight || 47.47
      this.showMap =false
      this.$nextTick(()=>{
        // this.towerUrl = row.modelRoute
        this.towerUrl = row.modelRoute
        this.showMap = true
      })