| 
					
				 | 
			
			
				@@ -0,0 +1,415 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    class="sm-panel sm-function-module-content ghzc modelStretch" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    v-if="modelStretchShow" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    v-drag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="sm-panel-header"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <span>模型拉伸</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <span class="closeBtn" @click="toggleVisibility">×</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="xz_box"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form :model="form" ref="form" label-width="80px" :rules="rules"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="平面范围:" prop="xzmj"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <range type="hgxfx" :keys="['hx', 'sc']" class="range" ref="range" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-row :gutter="10"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="14" style="text-align: center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 楼体高度: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-input-number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              step="1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="form.BuildingHeight" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="XYChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ></el-input-number> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="模型高度:" prop="BuildingHeight"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class="inputwidth" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-model.number="form.BuildingHeight" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                type="number" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              米 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="10" style="text-align: center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item label="层高:" prop="FLOORH" label-width="45px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class="inputwidth" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-model.number="form.FLOORH" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                type="number" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              米 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- 层高: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-input-number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              step="0.1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="form.FLOORH" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="XYChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ></el-input-number> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="模型名称:" prop="mxmc"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-model="form.mxmc" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            size="mini" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            placeholder="请输入模型名称" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- <div class="SaveCenter"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-button size="mini" type="primary" @click="onSubmit" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                >开始调整</el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-button size="mini" @click="removeEntities">清除</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="Btns"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button size="mini" @click="clear">清 除</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" size="mini" @click="submit">确 定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import range from "@/components/mapview/range.vue"; ///mapview/range 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {} from "@/api/map"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import parse from "wellknown"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let polygonids = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let dataSources = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: "modelStretch", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    range, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { form: { BuildingHeight: 50 } }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  created() {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mounted() {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    modelStretchShow() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return store.state.toolBar[13]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    toggleVisibility() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      store.setToolBarAction(13); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pullUp(item, height) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let upid = "up" + item.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!dataSources[upid]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.loadGeoJSON(parse(item.geom), "#000000", upid, height, item.dkbm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let entities = dataSources[upid].entities.values; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        entities.forEach((entity, ei) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (height && entity.polygon) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            entity.polygon.extrudedHeight = height; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let center = this.getCentroid(parse(item.geom), ei); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            entity.position = Cesium.Cartesian3.fromDegrees( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              center[0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              center[1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              height 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        viewer.flyTo(dataSources[upid], { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          offset: new Cesium.HeadingPitchRange(0, -0.8), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pullClear(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let upid = "up" + item.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (dataSources[upid]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        viewer.dataSources.remove(dataSources[upid]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dataSources[upid] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 加载GeoJSON数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loadGeoJSON(geojson, yanse, id, height, name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let fcolor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id && id != "all" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ? Cesium.Color.fromCssColorString(yanse) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          : Cesium.Color.WHITE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const dataSource = new Cesium.GeoJsonDataSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dataSource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .load(geojson, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          clampToGround: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          stroke: Cesium.Color.fromCssColorString(yanse), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          fill: fcolor.withAlpha(0.4), //注意:颜色必须大写,即不能为blue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          strokeWidth: 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // markerSymbol: "", //点图钉的默认符号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then((data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          viewer.dataSources.add(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let entities = data.entities.values; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // let addlabel = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (!geojson.type.includes("Polygon") || height) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            entities.forEach((entity, ei) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (entity.billboard) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.billboard = undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.point = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  pixelsize: 20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  color: Cesium.Color.fromCssColorString(yanse), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (height && entity.polygon) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.polygon.extrudedHeight = height; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.polygon.material = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  Cesium.Color.fromCssColorString("#cdcdcd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.polygon.outlineColor = Cesium.Color.BLACK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.polygon.outlineWidth = 1.0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // if (!addlabel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let center = this.getCentroid(geojson, ei); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var polycenter = Cesium.Cartesian3.fromDegrees( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  center[0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  center[1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  height 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.position = polycenter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entity.label = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  font: "bolder 18px sans-serif", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  style: Cesium.LabelStyle.FILL_AND_OUTLINE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  text: name, //图标名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  fillColor: Cesium.Color.fromCssColorString("#fff000"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  pixelOffset: new Cesium.Cartesian2(0, -20), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  zIndex: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // addlabel = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          var pitch = height ? -0.8 : -45; // Cesium.Math.toRadians(-45.0);-0.7853981633974483 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let range = height ? 3000 : 5000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          viewer.flyTo(data, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            offset: new Cesium.HeadingPitchRange(0, pitch), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // viewer.zoomTo(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dataSources[id] = data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (id == "all") _this.isshowAll = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    clear() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.range.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // this.pullClear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.removeEntities(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    submit() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var _temp = this.$refs.range.getRange(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      _temp.geojson = parse(_temp.geom); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // this.pullUp(_temp, this.form.BuildingHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.onSubmit(_temp.geojson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onSubmit(geojson) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let that = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that.removeEntities(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if (!that.loutiInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   that.$message({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     message: "未查询到模型数据,请重试加载模型", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     type: "warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // const element = that.loutiInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // //基础高度(地形高度)加入地形后可删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let jcgd = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // //地块编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // let bm = element.data.find((c) => c.label == "LANDNO"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if (bm && bm.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   //获取模型信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   let queryBySQLParameters = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     getFeatureMode: "SQL", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     datasetNames: [that.info.Minfo.datasourcename + ":项目范围"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     queryParameter: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //       attributeFilter: " DKBM = '" + bm.value + "'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     hasGeometry: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   let e = await mapQuery( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     that.info.Minfo.dataurl + "/featureResults.json?returnContent=true", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     queryBySQLParameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   debugger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   if (e && e.totalCount > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     e.features.forEach((feature) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //       feature.fieldNames.forEach((fieldName, i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //         if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //           fieldName == "BASEH" && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //           Number(feature.fieldValues[i]) > jcgd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //         ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //           jcgd = Number(feature.fieldValues[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   that.$message({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     message: "未找到模型基础高度,默认高程为0", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     type: "warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //顶部高度,底部高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let maxH = jcgd, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        minH = jcgd; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let FLOORindex = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FLOORindex <= Math.ceil(that.form.BuildingHeight / that.form.FLOORH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FLOORindex++ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // debugger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        maxH += that.form.FLOORH; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        minH = maxH - that.form.FLOORH; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("maxH:" + maxH + "----minH:" + minH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let ps = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // for (let index = 0; index < element.geometry.points.length; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   const point = element.geometry.points[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   ps.push(point.x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   ps.push(point.y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   // ps.push(minH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        geojson.coordinates[0].forEach((gom) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ps.push(gom[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ps.push(gom[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // let id = uuidv4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 定义多边形的顶点(经纬度) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var polygonHierarchy = new Cesium.PolygonHierarchy( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          Cesium.Cartesian3.fromDegreesArray(ps) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建带有高度的多边形 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var extrudedPolygon = new Cesium.GeometryInstance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          geometry: new Cesium.PolygonGeometry({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            polygonHierarchy: polygonHierarchy, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: minH, // 多边形底面的高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            extrudedHeight: maxH, // 拉伸到的高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          attributes: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: Cesium.ColorGeometryInstanceAttribute.fromColor( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              Cesium.Color.CHARTREUSE.withAlpha(0.1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 添加到场景中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let Primitive = new Cesium.Primitive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          geometryInstances: [extrudedPolygon], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          appearance: new Cesium.PerInstanceColorAppearance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            flat: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          shadows: Cesium.ShadowMode.ENABLED, // 开启阴影 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        viewer.scene.primitives.add(Primitive); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        polygonids.push(Primitive); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建多边形的边界线 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let pss = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // for (let index = 0; index < element.geometry.points.length; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   const point = element.geometry.points[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   pss.push(point.x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   pss.push(point.y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   pss.push(maxH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        geojson.coordinates[0].forEach((gom) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pss.push(gom[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pss.push(gom[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pss.push(maxH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var boundaryPolyline = new Cesium.GeometryInstance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          geometry: new Cesium.PolylineGeometry({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            positions: Cesium.Cartesian3.fromDegreesArrayHeights(pss), // 注意这里需要处理高度为0的情况,因为边界线通常在地表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 1, // 边界线的宽度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          attributes: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: Cesium.ColorGeometryInstanceAttribute.fromColor( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              Cesium.Color.CHARTREUSE.withAlpha(0.8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let boundaryPolylinePrimitive = new Cesium.Primitive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          geometryInstances: [boundaryPolyline], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          appearance: new Cesium.PolylineColorAppearance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            edgeWidth: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // vertexFormat: Cesium.PolylineVertexFormat.POSITION_AND_COLOR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            vertexFormat: Cesium.PolylineColorAppearance.VERTEX_FORMAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        viewer.scene.primitives.add(boundaryPolylinePrimitive); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        polygonids.push(boundaryPolylinePrimitive); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // viewer.entities.add({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   id: id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   polygon: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(ps), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     extrudedHeight: Number(maxH), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     perPositionHeight: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     material: Cesium.Color.CHARTREUSE.withAlpha(0.1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     outline: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     outlineColor: Cesium.Color.MEDIUMSPRINGGREEN, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     outlineWidth: 1.0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     shadows: Cesium.ShadowMode.ENABLED, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    removeEntities() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let index = 0; index < polygonids.length; index++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const element = polygonids[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        viewer.scene.primitives.remove(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // viewer.entities.removeById(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      polygonids = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch: { modelStretchShow(newVal) {} }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <style scoped lang="scss"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.sm-panel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  max-width: 500px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.modelStretch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 400px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 600px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .range { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 80%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .xz_box { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .inputwidth { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: calc(100% - 20px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .Btns { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // display: -webkit-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // display: -ms-flexbox; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 20px 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // -webkit-box-pack: justify; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // -ms-flex-pack: justify; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    justify-content: space-between; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // bottom: 0px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@import "../complianceAnalysis//ghzc.scss"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 |