ソースを参照

通过关联表获取属性

gushoubang 1 ヶ月 前
コミット
db9848a5f9
1 ファイル変更77 行追加63 行削除
  1. 77 63
      src/components/Query/clickQuery/clickQuery.vue

+ 77 - 63
src/components/Query/clickQuery/clickQuery.vue

@@ -426,74 +426,88 @@ export default {
       // ##############################################
       if (eneityName.indexOf("单体") > -1) {
         console.log("eneityName", eneityName);
-        let buildingLayer = scene.layers.find(eneityName);
-        buildingLayer.indexedDBSetting.isAttributesSave = true; //保存属性
-        if (buildingLayer.getSelection().length > 0) {
-          const selectedId = Number(buildingLayer.getSelection()[0]);
-          buildingLayer.getAttributesById([selectedId]).then(async function (atts) {
-            debugger
-            console.log("atts", atts);
-            const ModelName = atts["ModelName"];
-            let obj = store.state.vectorlayerlist.find((i) => {
-              return eneityName == i.title;
-            });
-            let url1 = obj.url.replace("3D-", "data-");
-            let url2 = url1.replace(
-              "realspace",
-              "data/featureResults.rjson?returnContent=true"
-            );
-            console.log(url2, "url2");
-            let queryByIDParameters = {
-              getFeatureMode: "SQL",
-              datasetNames: [eneityName+":"+eneityName],
-              queryParameter: {"attributeFilter":"ModelName="+ModelName},
-            };
-            let e = await mapQuery(url2, queryByIDParameters);
-            if (e && e.totalCount > 0) {
-              // that.layerList.push(store.state.vectorlayerlist[i]);
-              that.layerList.push(obj);
-              for (let u = 0; u < e.features.length; u++) {
-                let cur = [];
-                var linSAr = JSON.parse(JSON.stringify(e.features[u]));
-                if (e.features[u].fieldNames) {
-                  linSAr.fieldNames.forEach((fieldName, i) => {
-                    let v = linSAr.fieldValues[i];
-                    if (v != "" && !isNaN(parseFloat(v))) {
-                      v = Math.round(parseFloat(v) * 100) / 100;
-                    }
+        debugger
+        let ModelName = "";
+        let obj = store.state.vectorlayerlist.find((i) => {
+          return eneityName == i.title;
+        });
+        let url1 = obj.url.replace("3D-", "data-");
+        let url2 = url1.replace(
+          "realspace",
+          "data/featureResults.rjson?returnContent=true"
+        );
+        console.log(url2, "url2");
+        let queryModelName = {
+          getFeatureMode: "ID",
+          datasetNames: [eneityName + ":" + eneityName + "关联"],
+          ids: [pickedFeature.id]
+        };
+        let res = await mapQuery(url2, queryModelName);
+        if (res && res.totalCount > 0) {
+          let feature = res.features[0]
+          // 循环feature中的fieldNames
+          for (let i = 0; i < feature.fieldNames.length; i++) {
+            // 获取字段名
+            let fieldName = feature.fieldNames[i];
+            // 获取字段值
+            let fieldValue = feature.fieldValues[i];
+            // 如果字段名为ModelName
+            if (fieldName == "MODELNAME") {
+              // 获取ModelName的值
+              ModelName = fieldValue;
+              break;
+            }
+          }
+        }
+
+        let queryByIDParameters = {
+          getFeatureMode: "SQL",
+          datasetNames: [eneityName + ":" + eneityName+"矢量"],
+          queryParameter: { "attributeFilter": "ModelName=" + ModelName },
+        };
+        let e = await mapQuery(url2, queryByIDParameters);
+        if (e && e.totalCount > 0) {
+          // that.layerList.push(store.state.vectorlayerlist[i]);
+          that.layerList.push(obj);
+          for (let u = 0; u < e.features.length; u++) {
+            let cur = [];
+            var linSAr = JSON.parse(JSON.stringify(e.features[u]));
+            if (e.features[u].fieldNames) {
+              linSAr.fieldNames.forEach((fieldName, i) => {
+                let v = linSAr.fieldValues[i];
+                if (v != "" && !isNaN(parseFloat(v))) {
+                  v = Math.round(parseFloat(v) * 100) / 100;
+                }
 
-                    // cur.push({ name: fieldName, value: v });
-                    if (
-                      fieldName.toLowerCase().indexOf("shape") < 0 &&
-                      fieldName.toLowerCase().indexOf("sm") &&
-                      v != ""
-                    ) {
-                      cur.push({ name: fieldName, value: v });
-                    }
-                  });
+                // cur.push({ name: fieldName, value: v });
+                if (
+                  fieldName.toLowerCase().indexOf("shape") < 0 &&
+                  fieldName.toLowerCase().indexOf("sm") &&
+                  v != ""
+                ) {
+                  cur.push({ name: fieldName, value: v });
+                }
+              });
 
-                  //获取图层id的参数
-                  let substring = pickedFeature.primitive._baseUri.query;
-                  for (let p = 0; p < store.state.vectorlayerlist.length; p++) {
-                    if (store.state.vectorlayerlist[p].id == substring) {
-                      that.layerList.push(store.state.vectorlayerlist[p]);
-                      break;
-                    }
-                  }
-                  that.queryResults[substring] = [cur];
-                  that.queryResultsGeom[substring] = [];
-                  that.activeLayerId = substring;
-                } else {
-                  that.$message({
-                    message: "查询结果为空!",
-                    type: "warning",
-                    customClass: "messageIndex",
-                  });
+              //获取图层id的参数
+              let substring = pickedFeature.primitive._baseUri.query;
+              for (let p = 0; p < store.state.vectorlayerlist.length; p++) {
+                if (store.state.vectorlayerlist[p].id == substring) {
+                  that.layerList.push(store.state.vectorlayerlist[p]);
+                  break;
                 }
               }
+              that.queryResults[substring] = [cur];
+              that.queryResultsGeom[substring] = [];
+              that.activeLayerId = substring;
+            } else {
+              that.$message({
+                message: "查询结果为空!",
+                type: "warning",
+                customClass: "messageIndex",
+              });
             }
-
-          });
+          }
         }
       } else if (eneityName.indexOf("雨水") > -1 || eneityName.indexOf("管线") > -1) {
         // for (let i = 0; i < store.state.vectorlayerlist.length; i++) {