Bläddra i källkod

框选点位数据查询

lkk 9 månader sedan
förälder
incheckning
bb7f648c6b
1 ändrade filer med 98 tillägg och 13 borttagningar
  1. 98 13
      src/components/Query/clickQuery/clickQuery.vue

+ 98 - 13
src/components/Query/clickQuery/clickQuery.vue

@@ -415,14 +415,93 @@ export default {
         this.pickPosition(movement);
       }
     },
-    mapSelect(movement) {
-      console.log(window.tempSelect, "window.tempSelect");
-      let url1 = window.tempSelect.url.replace("3D-", "data-");
-      let url2 = url1.replace(
-        "realspace",
-        "data/featureResults.rjson?returnContent=true"
-      );
-      
+    async mapSelect(pos, movement) {
+      let obj = window.tempSelect;
+      let queryByIDParameters = {
+        // getFeatureMode: "BUFFER",
+        getFeatureMode: "SPATIAL",
+        spatialQueryMode: "INTERSECT",
+        datasetNames: [`${obj.fwgzkj}:${obj.fwmc}`], //obj.source.split(","),
+        geometry: {
+          parts: [1], // points: [{ y: xy.lat, x: xy.lng }],
+          points: pos,
+          type: "REGION",
+        },
+        bufferDistance: 0.00005,
+        hasGeometry: true,
+      };
+      let url2 = this.calcIserverURI(obj.url);
+      let e;
+      e = await this.mapQuery(url2, queryByIDParameters);
+      if (e && e.totalCount > 0) {
+        this.addLayerList(obj.title, obj);
+        let queryData = [];
+        let geoms = [];
+        let parts = [];
+        // let parseJson = JSON.parse(obj.legend);
+        let parseJson = await this.getfieldList(obj.id, false);
+        for (let u = 0; u < e.features.length; u++) {
+          let cur = [];
+          var linSAr = JSON.parse(JSON.stringify(e.features[u]));
+          function condition(ci) {
+            return ci.status != undefined && ci.status;
+          }
+          if (e.features[u].fieldNames) {
+            linSAr.fieldNames.forEach((fieldName, i) => {
+              let perjson = parseJson.filter(
+                (p) => p.filedName.toUpperCase() == fieldName
+              );
+              if (perjson.length > 0) {
+                var show = condition(perjson[0]);
+                var order = perjson[0].order || linSAr.fieldNames.length;
+                if (fieldName != perjson[0].filedNameZh)
+                  fieldName = perjson[0].filedNameZh;
+              }
+              if (show) {
+                let v = linSAr.fieldValues[i];
+                if (v != "" && !isNaN(parseFloat(v))) {
+                  v = Math.round(parseFloat(v) * 100) / 100;
+                }
+                cur.push({ name: fieldName, value: v, order });
+              }
+            });
+          } else {
+            that.$message({
+              message: "查询结果为空!",
+              type: "warning",
+              customClass: "messageIndex",
+            });
+          }
+          // console.log(cur, "cur");
+          //排序
+          cur.sort((a, b) => a.order - b.order);
+          let urlNew = obj.url + ".json";
+          let resNew = await axios.get(urlNew);
+          let serCode = resNew.data.prjCoordSys.epsgCode;
+          let points = [];
+          for (let y = 0; y < e.features[u].geometry.points.length; y++) {
+            let c = {};
+            if (serCode == 3857) {
+              c = that.cartesianToCartographic84(
+                e.features[u].geometry.points[y].x,
+                e.features[u].geometry.points[y].y
+              );
+            } else {
+              c = e.features[u].geometry.points[y];
+            }
+            points.push([c.x, c.y]);
+          }
+          parts.push(e.features[u].geometry.parts);
+          geoms.push(points);
+          queryData.push(cur);
+        }
+
+        this.queryResultsGeomPart[obj.id] = parts;
+        this.queryResults[obj.id] = queryData;
+        this.queryResultsGeom[obj.id] = geoms;
+      }
+      this.setactiveLayerId();
+
       // this.drawPolygon(window.tempSelect)
       // //拾取模型
       // let pickedFeature = viewer.scene.pick(movement.position);
@@ -953,12 +1032,12 @@ export default {
     },
     //绘制
     drawMap() {
+      let nReaions = [];
       if (!window.handlerPolygon) {
         common.initHandler("Polygon");
       }
       common.handlerDrawing("Polygon").then(
         (res) => {
-          // console.log(res.positions, "------");
           //过滤掉高度
           const filteredArr = res.positions.filter((item, index) => {
             if ((index + 1) % 3 !== 0) return item;
@@ -966,14 +1045,20 @@ export default {
           filteredArr.push(res.positions[0]);
           filteredArr.push(res.positions[1]);
           console.log(filteredArr, "max-----");
+          for (let i = 0; i < filteredArr.length; i += 2) {
+            // result.push(arr.slice(i, i + 2));
+            nReaions.push({
+              x: filteredArr.slice(i, i + 2)[0],
+              y: filteredArr.slice(i, i + 2)[1],
+            });
+          }
+          console.log(nReaions, "nReaions");
+
           store.state.vectorlayerlist.forEach((obj) => {
             if (obj.serverType == "geoserver") {
               // this.getGeoserver(xy, obj);
             } else {
-              //     if (!obj.fwgzkj && !obj.fwmc) {
-              //   continue;
-              // }
-              // this.superQuery(xy, obj);
+              this.mapSelect(nReaions);
             }
           });
         },