jihongshun
2 天以前 ecc89fd2f61441ea03a264f6111a6089ce4ed2aa
src/utils/components/init-map.vue
@@ -12,8 +12,6 @@
        <el-input v-model="mergeNumber" placeholder="请输入合并范围" type="number" style="width: 150px;"></el-input>
        <el-button  @click="mergePoint()" type="success">合并</el-button>
        <el-button  @click="renderData()" type="success">数据渲染</el-button>
        <el-button  @click="VisualCone()" type="success">生成视锥体</el-button>
        <el-button  @click="fly()" type="success">飞到指定地点</el-button>
      </div>
      <!-- <div class="key-container">
@@ -96,7 +94,7 @@
let ScopeElement; //光轴、视频
let preVideoScopePrimitiveArrTie = [];
let scratchSetViewMatrix3 = new Cesium.Matrix3();
let chooseId
// let  pois = [0, 0,0] 
let holdingPosition;
let rightKeyMove = false
@@ -338,18 +336,21 @@
                const tagert = Cesium.Cartesian3.add(holdingPosition,scalerNormalize,new Cesium.Cartesian3());
                console.log(Cesium.Cartographic.fromCartesian(tagert))
                _this.creatPin("aerialPoiId"+counter,tagert,`空${counter}`,Cesium.Color.RED,viewerM);
                preVideoScopePrimitiveArrTie = []
                // preVideoScopePrimitiveArrTie = []
                console.log(preVideoScopePrimitiveArrTie)
                console.log(Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).height))
                _this.updateCameraMovement();
                if(cameraVideo){
                  viewerM.scene.primitives.remove(cameraVideo)
                }
                // if(cameraVideo){
                //   viewerM.scene.primitives.remove(cameraVideo)
                // }
              chooseId = crypto.randomUUID()
              //创建视锥体
                let data = {
                    "FHorFieldAngle": 32.13,
                    "FVerFieldAngle": 18.39,
                    "altitude":  Cesium.Cartographic.fromCartesian(tagert).height,
                    "id": "111111",
                    "id": chooseId,
                    "chanNo": 1,
                    "latitude": Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude),
                    "longitude":  Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude),
@@ -753,20 +754,6 @@
      }
      this.updateCameraMovement()
    },
    VisualCone(){
      let data = {
          "FHorFieldAngle": 32.13,
          "FVerFieldAngle": 18.39,
          "altitude": 55,
          "cameraId": "fdae8144e0fc47cf95152080eb3f7db3",
          "chanNo": 1,
          "latitude": 46.58528798,
          "longitude": 124.9662813,
          "p": 26.8,
          "t": 351.3,
          "z": 1
      }
    },
     // 创建初始化的光轴
    createVideoScope(data) {
      console.log(data)
@@ -814,7 +801,7 @@
          showHelperPrimitive: true,
        });
        cameraVideo._primitive.classificationType = 2; // 同时投影地形和3dtiles数据
        cameraVideo.id = "sz" + data.id;
        cameraVideo.id =  data.id;
        let isHole = false;
        cameraVideo._primitive.appearance.material = new Cesium.Material({
          fabric: {
@@ -831,12 +818,19 @@
        // viewer.scene.primitives.add(cameraVideo);
        let pmObj = {};
        console.log(data)
        pmObj.id = "sz" + data.id;
        pmObj.id = data.id;
        console.log(pmObj)
        pmObj.primitive = cameraVideo;
        // pmCollection.push(pmObj);//幕布,视频转换使用
        viewerM.scene.primitives.add(cameraVideo);
        preVideoScopePrimitiveArrTie.push(pmObj);
        preVideoScopePrimitiveArrTie.map((item)=>{
          console.log(item)
          console.log(chooseId)
          if(item.id != chooseId){
            item.primitive.show = false
          }
        })
      }
      // }
    },
@@ -893,16 +887,6 @@
      return inverseViewMatrix;
    },
    fly(){
       viewerM.scene.camera.setView({
          destination: Cesium.Cartesian3.fromDegrees(124.9662813, 46.58528798, 349.0), // 以经纬度设置位置(例如:大庆龙兴路)
          orientation: {
              heading: Cesium.Math.toRadians(194.65),  // 方向
              pitch: Cesium.Math.toRadians(-31.43), // 俯角
              roll: 0
          }
      });
    },
    onCameraChange() {
      const camera = viewerC.camera;
      const position = camera.positionCartographic;
@@ -914,11 +898,15 @@
      // 计算距离(单位:米)
      const distanceBetween = Cesium.Cartesian3.distance(point1, point2)
      console.log(distanceBetween)
      if(preVideoScopePrimitiveArrTie?.length !=0 ){
        let obj = this.updateSZScope(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height,heading,pitch,roll,1,distanceBetween)
        preVideoScopePrimitiveArrTie[0].primitive.inverseViewMatrix = obj.M
        preVideoScopePrimitiveArrTie[0].primitive.frustum = obj.F
      }
      console.log(preVideoScopePrimitiveArrTie)
      console.log(chooseId)
      preVideoScopePrimitiveArrTie.map((item)=>{
        if(item.id == chooseId){
          let obj = this.updateSZScope(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height,heading,pitch,roll,1,distanceBetween)
          item.primitive.inverseViewMatrix = obj.M
          item.primitive.frustum = obj.F
        }
      })
    },
    //更新视椎体位置
    updateSZScope(lon, lat, alt, camHeading, camPitch, camRoll, LightView,distanceBetween) {