|  | @@ -7,6 +7,10 @@
 | 
	
		
			
				|  |  |      <div class="toolBar">
 | 
	
		
			
				|  |  |        <el-cascader size="mini" :show-all-levels="false" :options="xzqTreeData" placeholder="行政区"
 | 
	
		
			
				|  |  |          :props="{ checkStrictly: true, expandTrigger: 'hover' }" clearable v-model="xzqTreeValue"></el-cascader>
 | 
	
		
			
				|  |  | +      <el-select size="mini" v-model="Skybox" placeholder="天空盒">
 | 
	
		
			
				|  |  | +        <el-option v-for="item in SkyboxList" :key="item.value" :label="item.label" :value="item.value">
 | 
	
		
			
				|  |  | +        </el-option>
 | 
	
		
			
				|  |  | +      </el-select>
 | 
	
		
			
				|  |  |        <li class="sm-btn sm-tool-btn" :title="Resource.Resource" @click="choose(0)">
 | 
	
		
			
				|  |  |          <span class="iconfont icontuceng"></span>
 | 
	
		
			
				|  |  |        </li>
 | 
	
	
		
			
				|  | @@ -84,6 +88,7 @@ export default {
 | 
	
		
			
				|  |  |    props: {},
 | 
	
		
			
				|  |  |    data() {
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  | +      last: false,
 | 
	
		
			
				|  |  |        sharedState: store.state,
 | 
	
		
			
				|  |  |        show: true,
 | 
	
		
			
				|  |  |        clickShow: false,
 | 
	
	
		
			
				|  | @@ -91,18 +96,118 @@ export default {
 | 
	
		
			
				|  |  |        xzqTreeData: [],
 | 
	
		
			
				|  |  |        xzqTreeValue: "",
 | 
	
		
			
				|  |  |        curXzqCode: "",
 | 
	
		
			
				|  |  | +      Skybox: "",
 | 
	
		
			
				|  |  | +      skyListener: null,
 | 
	
		
			
				|  |  | +      defaultSkyBox: null,
 | 
	
		
			
				|  |  | +      ViewerSkyBox: {},
 | 
	
		
			
				|  |  | +      SkyboxList: [{
 | 
	
		
			
				|  |  | +        value: 'lantian',
 | 
	
		
			
				|  |  | +        label: '蓝天'
 | 
	
		
			
				|  |  | +      }, {
 | 
	
		
			
				|  |  | +        value: 'qingtian',
 | 
	
		
			
				|  |  | +        label: '晴天'
 | 
	
		
			
				|  |  | +      }, {
 | 
	
		
			
				|  |  | +        value: 'wanxia',
 | 
	
		
			
				|  |  | +        label: '晚霞'
 | 
	
		
			
				|  |  | +      }, {
 | 
	
		
			
				|  |  | +        value: 'cloudy',
 | 
	
		
			
				|  |  | +        label: '多云'
 | 
	
		
			
				|  |  | +      }, {
 | 
	
		
			
				|  |  | +        value: 'partly_cloudy_puresky',
 | 
	
		
			
				|  |  | +        label: '晴间多云'
 | 
	
		
			
				|  |  | +      }, {
 | 
	
		
			
				|  |  | +        value: 'yewan',
 | 
	
		
			
				|  |  | +        label: '夜晚'
 | 
	
		
			
				|  |  | +      }]
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    created() {
 | 
	
		
			
				|  |  |      this.getXzqTreeData();
 | 
	
		
			
				|  |  | +    this.initSkyBox();
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    computed: {
 | 
	
		
			
				|  |  |      ToolBarShow: function () {
 | 
	
		
			
				|  |  |        return this.sharedState.ToolBarShow;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    methods: {
 | 
	
		
			
				|  |  | +    initSkyBox() {
 | 
	
		
			
				|  |  | +      for (let i = 0; i < this.SkyboxList.length; i++) {
 | 
	
		
			
				|  |  | +        let c = new Cesium.SkyBox({
 | 
	
		
			
				|  |  | +          sources: {
 | 
	
		
			
				|  |  | +            positiveX: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Right.jpg",
 | 
	
		
			
				|  |  | +            negativeX: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Left.jpg",
 | 
	
		
			
				|  |  | +            positiveY: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Front.jpg",
 | 
	
		
			
				|  |  | +            negativeY: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Back.jpg",
 | 
	
		
			
				|  |  | +            positiveZ: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Up.jpg",
 | 
	
		
			
				|  |  | +            negativeZ: "/static/Cesium/Assets/Textures/SkyBox/" + this.SkyboxList[i].value + "/Down.jpg",
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        c.WSpeed = 0.5;
 | 
	
		
			
				|  |  | +        this.ViewerSkyBox[this.SkyboxList[i].value] = c;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    setSkyBox() {
 | 
	
		
			
				|  |  | +      let scene = window.viewer.scene;
 | 
	
		
			
				|  |  | +      scene.cloudBox = null;
 | 
	
		
			
				|  |  | +      this.currentSkyBox = this.ViewerSkyBox[this.Skybox];
 | 
	
		
			
				|  |  | +      if (!this.last) {
 | 
	
		
			
				|  |  | +        this.defaultSkyBox = window.scene.skyBox;
 | 
	
		
			
				|  |  | +        this.last = !this.last;
 | 
	
		
			
				|  |  | +        for (let attr in this.ViewerSkyBox) {
 | 
	
		
			
				|  |  | +          this.ViewerSkyBox[attr].update(scene.frameState, true);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        let that = this;
 | 
	
		
			
				|  |  | +        this.skyListener = function () {
 | 
	
		
			
				|  |  | +          let cameraHeight = scene.camera.positionCartographic.height;
 | 
	
		
			
				|  |  | +          let skyAtmosphereH1 = 22e10; // 大气开始渐变的最大高度
 | 
	
		
			
				|  |  | +          let skyBoxH1 = 15e4; // 天空开始渐变的最大高度
 | 
	
		
			
				|  |  | +          let skyBoxH2 = 12e4; // 天空开始渐变的最小高度
 | 
	
		
			
				|  |  | +          let bufferHeight = 1e4;
 | 
	
		
			
				|  |  | +          if (cameraHeight < skyAtmosphereH1 && Cesium.defined(that.currentSkyBox)) {
 | 
	
		
			
				|  |  | +            let skyAtmosphereT = (cameraHeight - skyBoxH2) / (skyAtmosphereH1 - skyBoxH2);
 | 
	
		
			
				|  |  | +            if (skyAtmosphereT > 1.0) {
 | 
	
		
			
				|  |  | +              skyAtmosphereT = 1.0;
 | 
	
		
			
				|  |  | +            } else if (skyAtmosphereT < 0.0) {
 | 
	
		
			
				|  |  | +              skyAtmosphereT = 0.0;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            let skyBoxT = (cameraHeight - skyBoxH2) / (skyBoxH1 - skyBoxH2);
 | 
	
		
			
				|  |  | +            if (skyBoxT > 1.0) {
 | 
	
		
			
				|  |  | +              skyBoxT = 1.0;
 | 
	
		
			
				|  |  | +            } else if (skyBoxT < 0.0) {
 | 
	
		
			
				|  |  | +              skyBoxT = 0.0;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            that.currentSkyBox.alpha = 1.0 - skyBoxT;
 | 
	
		
			
				|  |  | +            // that.currentSkyBox.alpha = 1.0;
 | 
	
		
			
				|  |  | +            scene.skyBox = that.currentSkyBox;
 | 
	
		
			
				|  |  | +            if (cameraHeight > skyBoxH2) {
 | 
	
		
			
				|  |  | +              scene.skyAtmosphere.show = true;
 | 
	
		
			
				|  |  | +              scene.skyAtmosphere.alpha = skyAtmosphereT;
 | 
	
		
			
				|  |  | +              // scene.skyAtmosphere.alpha = 1.0;
 | 
	
		
			
				|  |  | +              // scene.skyBox = that.currentSkyBox;
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +              scene.skyAtmosphere.show = false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          } else {
 | 
	
		
			
				|  |  | +            scene.skyAtmosphere.alpha = 1.0;
 | 
	
		
			
				|  |  | +            scene.skyBox = that.defaultSkyBox;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          //控制相机 速率
 | 
	
		
			
				|  |  | +          // if (scene.skyBox !== that.defaultSkyBox) {
 | 
	
		
			
				|  |  | +          //   if (cameraHeight > (skyBoxH2 - 2 * bufferHeight) && cameraHeight < skyBoxH1 + 3 * bufferHeight) {
 | 
	
		
			
				|  |  | +          //     scene.screenSpaceCameraController.zoomFactor = 0.4;
 | 
	
		
			
				|  |  | +          //   } else {
 | 
	
		
			
				|  |  | +          //     scene.screenSpaceCameraController.zoomFactor = 5.0;
 | 
	
		
			
				|  |  | +          //   }
 | 
	
		
			
				|  |  | +          // } else {
 | 
	
		
			
				|  |  | +          //   scene.skyBox.alpha = 1.0;
 | 
	
		
			
				|  |  | +          //   scene.skyAtmosphere.alpha = 1.0;
 | 
	
		
			
				|  |  | +          //   scene.screenSpaceCameraController.zoomFactor = 5.0;
 | 
	
		
			
				|  |  | +          // }
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +        window.scene.postRender.addEventListener(this.skyListener);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      getXzqGeom() {
 | 
	
		
			
				|  |  |        GetXzqhGeom(this.curXzqCode).then((res) => {
 | 
	
		
			
				|  |  |          viewer.entities.removeAll();
 | 
	
	
		
			
				|  | @@ -141,17 +246,6 @@ export default {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      choose(i) {
 | 
	
		
			
				|  |  |        store.setToolBarAction(i);
 | 
	
		
			
				|  |  | -      // if (i == 9) {
 | 
	
		
			
				|  |  | -      //   this.plan = false;
 | 
	
		
			
				|  |  | -      //   this.clickShow = !this.clickShow;
 | 
	
		
			
				|  |  | -      // } else if (i == 10) {
 | 
	
		
			
				|  |  | -      //   this.clickShow = false;
 | 
	
		
			
				|  |  | -      //   this.plan = !this.plan;
 | 
	
		
			
				|  |  | -      // } else {
 | 
	
		
			
				|  |  | -      //   this.clickShow = false;
 | 
	
		
			
				|  |  | -      //   this.plan = false;
 | 
	
		
			
				|  |  | -      //   store.setToolBarAction(i);
 | 
	
		
			
				|  |  | -      // }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    watch: {
 | 
	
	
		
			
				|  | @@ -163,6 +257,9 @@ export default {
 | 
	
		
			
				|  |  |          this.getXzqGeom();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    Skybox() {
 | 
	
		
			
				|  |  | +      this.setSkyBox();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 |