lixuliang
2024-04-18 b5c4921d0828500379502a916a2ccf2d9d4acc96
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// 四面体
<template>
  <Popup
    ref="pop"
    :title="title"
    :shadow="false"
    :left="left"
    width="310px"
    :showBtn="false"
  >
    <el-form ref="form" :model="data" :rules="rules" label-width="70px">
      <el-form-item label="转速:">
        <el-input v-model="data.multiple"></el-input>
      </el-form-item>
      <el-form-item label="规模:">
        <el-input v-model="data.scale"></el-input>
      </el-form-item>
      <el-form-item label="高度:">
        <el-input v-model="height"></el-input>
      </el-form-item>
      <el-form-item label="绘制:">
        <el-button type="info" size="mini" @click="draw">图上选点</el-button>
      </el-form-item>
    </el-form>
  </Popup>
</template>
 
<script>
import Popup from "@tools/Popup";
import Bus from "@tools/Bus";
let handler;
export default {
  name: "Tetrahedron",
  components: {
    Popup,
  },
  data() {
    return {
      title: "添加四面体",
      left: "calc(100% - 320px)",
      data: {
        multiple: "2.0",
        scale: 50,
      },
      height: 100,
      // 表单验证规则
      rules: {},
      //颜色
    };
  },
  mounted() {},
 
  methods: {
    // 关闭弹窗
    close() {
      handler && handler.destroy();
      handler = undefined;
      // 重置data值
      Object.assign(this.$data, this.$options.data());
    },
    // 打开弹窗
    open() {
      this.close();
      this.$refs.pop.open();
    },
    draw() {
      this.$refs.form.validate((valid) => {
        // 验证通过
        if (valid) {
          handler && handler.destroy();
          handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
          this.$message("在场景内点击左键添加");
 
          handler.setInputAction((event) => {
            // 获取经纬度
            let degrees = sgworld.Navigate.getMouseDegrees(event);
            this.addTetrahedron(degrees);
            // 销毁点击事件
            handler.destroy();
          }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        }
      });
    },
 
    addTetrahedron(degrees) {
      degrees.height = this.height;
      let Tetrahedrod = sgworld.Creator.addTetrahedron({
        position: degrees,
        multiple: this.data.multiple,
        scale: new Cesium.Cartesian3(
          this.data.scale,
          this.data.scale,
          this.data.scale
        ),
      });
 
      // 添加到图层树
      Bus.$emit("addOtherData", "特效", {
        id: sgworld.Core.getuid(),
        name: "新建四面体",
        sourceType: "tetrahedrod",
        position: degrees,
        ...this.data,
        item: Tetrahedrod,
      });
    },
  },
};
</script>
 
<style scoped lang="less">
.el-form {
  margin-top: 20px;
  margin-right: 10px;
  width: 300px;
 
  /deep/ .el-form-item__label {
    color: #fff;
    font-size: 18px;
  }
}
</style>