| 
					
				 | 
			
			
				@@ -64,7 +64,10 @@ import MultiLevelQuery from "./MultiLevelQuery.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as pick_cockpit_vector from "./pick_cockpit_vector.js"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as tdsy from "@/views/cockpit/js/tdsy"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as turf from "@turf/turf"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let gwtype; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let query_click = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   name: "clickQuery", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   components: { CockpitVector, MultiLevelQuery }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -167,9 +170,27 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.$nextTick((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      query_click = new Cesium.CustomDataSource("query_click"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      viewer.dataSources.add(query_click); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isArray2D(arr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 首先检查arr是否是数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!Array.isArray(arr)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 检查数组中的每个元素是否也是数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = 0; i < arr.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!Array.isArray(arr[i])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 如果所有元素都是数组,那么arr是二维数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     toggleVisibility() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.removeMapLayerQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       store.setToolBarAction(9); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -405,6 +426,60 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               queryByIDParameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // 结果高亮 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const outputCoords = this.convertCoordinates(e.features[0].geometry.points); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          outputCoords.push(outputCoords[0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let f = { "type": "Polygon", "coordinates": [outputCoords] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let result = turf.buffer(f, 1 / 99999, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            units: "kilometers", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let positions = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const twoDArray = result.geometry.coordinates[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const oneDArray = twoDArray.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          positions = oneDArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (this.isArray2D(oneDArray)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const oneDArray2 = oneDArray.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            positions = oneDArray2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          query_click.entities.add({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            polygon: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 获取指定属性(positions,holes(图形内需要挖空的区域)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              hierarchy: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                positions: Cesium.Cartesian3.fromDegreesArray(positions) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              outline: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 边框颜色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              outlineColor: Cesium.Color.RED, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 边框尺寸 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              outlineWidth: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 填充的颜色,withAlpha透明度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              material: Cesium.Color.RED, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 是否被提供的材质填充 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              fill: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 恒定高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              height: 1.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 显示在距相机的距离处的属性,多少区间内是可以显示的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000, 10000000), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 是否显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              show: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 顺序,仅当`clampToGround`为true并且支持地形上的折线时才有效。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              zIndex: 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (e && e.totalCount > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             that.layerList.push(store.state.vectorlayerlist[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let queryData = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -641,6 +716,9 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    convertCoordinates(coordArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return coordArray.map(coord => [coord.x, coord.y]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 取消左键点击查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     removeMapLayerQuery() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.queryResults = {}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -698,11 +776,22 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       uriArr[8] = "featureResults.rjson?returnContent=true"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return uriArr.join("/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    remove_query_click() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (var i = 0; i < 10; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        query_click.entities.values.forEach((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          query_click.entities.remove(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //地图数据查询事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     changleQueryItem(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       switch (item.index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 1: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this.mapQuerys("mapLayerQuery"); //图层点击事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.remove_query_click(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 2: { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -715,6 +804,8 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           pick_cockpit_vector.clear_data();//矢量拾取清除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this.$refs.MultiLevelQuery.clear_data();//多级查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.remove_query_click(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 4: {//驾驶舱矢量数据点选查询 
			 |