管道基础大数据平台系统开发-【前端】-新系統界面
src/components/preview_map.vue
@@ -1,4 +1,3 @@
<template>
  <div
    id="mapdiv"
@@ -66,11 +65,12 @@
            重载
          </el-button>
          <el-button
            v-if="modelForm.modelid == null"
            v-if="modelForm.modelid == null && $store.state.previewLayer.type  != '3dml'"
            size="small"
            @click="getModeKeyId"
          >模型主键</el-button>
          <el-button
            v-if="$store.state.previewLayer.type  != '3dml'"
            size="small"
            @click="resave"
          >保存</el-button>
@@ -402,7 +402,7 @@
    <undergroundModel ref="undergroundModel" />
  </div>
</template>
<script>
import {
  perms_selectLayers,
@@ -733,26 +733,39 @@
    async setShowModelInfo(result) {
      var modelKey = 'id';
      if (result.tileset.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
        if (data.code != 200) {
          return
        } else {
      if (result.tileset) {
        if (result.tileset.pubid && parseInt(result.tileset.pubid) > 0) {
          const data = await comprehensive_selectPubById({ id: result.tileset.pubid })
          modelKey = JSON.parse(data.result.json).modelid
          if (data.code != 200) {
            return
          } else {
            modelKey = JSON.parse(data.result.json).modelid
          }
          if (!modelKey) {
            return this.$message('没有模型主键ID,无法查询数据');
          }
          this.formInline.Id = result.getProperty(modelKey);
          this.layerID = result.getProperty(modelKey);
        }
        if (!modelKey) {
          return this.$message('没有模型主键ID,无法查询数据');
        }
      } else {
        var id = '3dml' + result.primitive.id;
        this.formInline.Id = id;
        this.layerID = id;
      }
      // this.formInline.title = result.getProperty("name")
      this.formInline.Id = result.getProperty(modelKey);
      this.layerID = result.getProperty(modelKey);
      this.formInline.layerId = result.primitive.layerId;
      this.formInline.layerName = result.primitive.id;
      // this.formInline.title = result.getProperty("name")
      if (!this.formInline.Id) {
        this.formInline.Id = "noAuto_" + this.formInline.layerId;
      }
      if (!this.layerID) {
        this.layerID = "noAuto_" + this.formInline.layerId;
      }
      this.startModelData();
      this.dialogVisible = true;
@@ -766,16 +779,13 @@
      if (data.code != 200) {
        return;
      }
      if (data.result == null) {
        this.isShowModel = true;
        this.formInline.name = this.formInline.title;
      } else {
        this.isShowModel = false;
        this.formInline = data.result;
        this.formInline.title = this.formInline.name;
      }
    },
    setChangeTileset(result) {
@@ -797,18 +807,19 @@
        }
      }
    },
    setAddLayers(res) {
      if (res.serveType == "Tileset") {
    setAddLayers(rs) {
      if (rs.serveType == "Tileset" || rs.serveType == "3DML") {
        var url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        if (rs.url.indexOf("{host}") != -1) {
          url = rs.url.replace("{host}", iisHost);
        } else {
          url = modelUrl + "/" + res.url
          url = modelUrl + "/" + rs.url
        }
        var tileset = Viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            name: res.cnName,
            name: rs.cnName,
            url: url, //192.168.20.106,to4
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
            maximumMemoryUsage: 768, // 最大内存:512
@@ -818,32 +829,37 @@
        );
        var that = this;
        tileset.readyPromise.then((tileset) => {
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          if (res.bak != '3dml') {
            that.getArgsTileset(tileset, res);
          tileset.id = rs.cnName;
          tileset.layerId = rs.id;
          tileset.pubid = rs.pubid;
          if (rs.serveType != '3DML') {
            that.getArgsTileset(tileset, rs);
          }
        });
      }
    },
    async getArgsTileset(tileset, res) {
    async getArgsTileset(tileset, rs) {
      if (res.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: res.pubid })
      if (rs.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: rs.pubid })
        if (data.code != 200) {
        } else {
          if (rs.serveType == '3DML') {
            this.tileSet(tileset, parseFloat(rs.elev))
          } else {
            this.reloadTile(tileset, data.result.json)
          }
          this.tileSet(tileset, parseFloat(res.elev))
        }
      } else {
        this.tileSet(tileset, parseFloat(res.elev))
        this.tileSet(tileset, parseFloat(rs.elev))
      }
    },
@@ -914,6 +930,10 @@
      // Viewer.camera.flyTo({
      //   destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
      // });
      if (is_production) {
        Viewer.imageryLayers.removeAll();
      }
      Viewer._enableInfoOrSelection = false;
      //显示fps
      Viewer.scene.debugShowFramesPerSecond = false;
@@ -923,6 +943,25 @@
      // window.sgworld.navControl("scale", false);
      //开启深度检测
      // sg.Analysis.depthTestAgainstTerrain(true)
      if (is_production) {
        var base_ulr = window.sceneConfig.baseUrl;
        if (base_ulr.indexOf('{host}') > -1) {
          base_ulr = base_ulr.replace("{host}", iisHost)
        }
        window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider(
          new Cesium.UrlTemplateImageryProvider({
            url: base_ulr,
          })
        );
      }
      Viewer.scene.globe.depthTestAgainstTerrain = true;
      // window.elevationTool = new SmartEarth.ElevationTool(window.sg);
      // elevationTool.setContourColor("#F1D487");
@@ -932,28 +971,39 @@
        requestVertexNormals: true,
      };
      window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      // window.terrainLayer = new Cesium.CesiumTerrainProvider({
      //   url: demLayer
      // });
      // Viewer.terrainProvider = window.terrainLayer
      if (this.$store.state.previewLayer) {
        var res = this.$store.state.previewLayer;
        var type = res.type;
        res.ulr = res.url.replace("{host}", iisHost);
        if (type == 'DEM') {
          window.terrainLayer.deleteObject();
          window.terrainLayer = null;
          // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
          // window.terrainLayer = null;
          window.terrainLayer = new Cesium.CesiumTerrainProvider({
            url: res.url
          });
          Viewer.terrainProvider = window.terrainLayer
          Viewer.camera.flyTo({
          /*Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000),
            orientation: {
              heading: 6.08434611923462,
              pitch: Cesium.Math.toRadians(-45.0),
              roll: 0.0
            }
          });*/
          var wkt = this.$wkt.parse(res.geom);
          var height = this.getHeight(wkt.coordinates[2]);
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height),
          });
        } else if (res.url.indexOf('.png') != -1) {
        } else if (type == 'DOM') {
          var wkt = this.$wkt.parse(res.geom);
          var height = this.getHeight(wkt.coordinates[2])
          window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider(
@@ -967,9 +1017,12 @@
          });
        } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt') {
          if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset);
          this.app.tileset = this.createTileset(res);
          var that = this;
          Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) {
            that.setModleLocatin()
            Viewer.flyTo(ts);
          });
@@ -1011,6 +1064,10 @@
      }
      this.$store.state.previewLayer.json = JSON.stringify(this.modelForm);
      if (this.$store.state.previewLayer.url) {
        var url = this.$store.state.previewLayer.url;
        this.$store.state.previewLayer.url = url.replace(iisHost, "{host}");
      }
      const data = await publish_update(this.$store.state.previewLayer);
      if (data.code != 200) {
        this.$message.error('数据保存失败');
@@ -1024,7 +1081,7 @@
    },
    reload() {
      var json = JSON.stringify(this.modelForm);
      var url = this.$store.state.previewLayer.url;
      var url = this.$store.state.previewLayer.url.replace("{host}", iisHost);
      if (!url) return;
      if (this.app.tileset) Viewer.scene.primitives.remove(this.app.tileset);
@@ -1114,7 +1171,7 @@
    setTilesetArgs(f) {
      if (!this.app.tileset || this.app.isBusy) return;
      debugger
      var pos = Cesium.Cartesian3.fromDegrees(parseFloat(f.lon), parseFloat(f.lat), parseFloat(f.height));
      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
@@ -1139,6 +1196,7 @@
      Viewer.flyTo(this.app.tileset);
    },
    createTileset(res) {
      res.url = res.url.replace('{host}', iisHost)
      return new Cesium.Cesium3DTileset({
        url: res.url,
        name: 'tsTest',
@@ -1174,6 +1232,7 @@
    setModleLocatin() {
      var res = this.$store.state.previewLayer;
      var type = res.type;
      if (this.modelType.indexOf(type) != -1) {
        if (type != '3dml') {
          this.setEditModelLayer(res)
@@ -1259,6 +1318,9 @@
          if (str.url != null && str.type == 2 && str.serveType == 'Tileset') {
            val.push(str);
          }
          if (str.url != null && str.type == 2 && str.serveType == '3DML') {
            val.push(str);
          }
        });
        var res = this.setTreeData(val);
@@ -1320,7 +1382,7 @@
}
</script>
<style lang="less" scoped>
.previewBox {
  width: 100%;
@@ -1355,4 +1417,4 @@
    visibility: hidden;
  }
}
</style>
</style>