Surpriseplus
2022-10-21 3b755f9a00e7b8e84a3487dd0f81b91c66abb582
src/components/mapsdk.vue
@@ -49,10 +49,68 @@
        </div>
      </el-card>
    </div>
    <div class="toponymicLocalBox" v-if="showToponymicLocalBoxDialog">
      <el-card class="box-card">
        <div slot="header" class="clearfix">
          <span>地名定位</span>
          <div style="float: right; cursor: pointer">
            <i class="el-icon-close" @click="closeBufferBox(3)"></i>
          </div>
        </div>
        <div class="box-body">
          <el-form :model="comprehensive" :inline="true" label-width="50px">
            <el-form-item label="地名:">
              <el-input
                style="width: 200px"
                v-model="comprehensive.name"
              ></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="info">查询</el-button>
            </el-form-item>
          </el-form>
          <el-table :data="tableData" height="200px" style="width: 100%">
            <el-table-column
              align="center"
              type="index"
              label="序号"
              width="70px"
            />
            <el-table-column prop="name" align="center" label="定位">
              <template slot-scope="scope">
                <el-button
                  @click="handleLocation(scope.$index, scope.row)"
                  size="small"
                  icon="el-icon-place"
                ></el-button>
              </template>
            </el-table-column>
            <el-table-column prop="name" align="center" label="地名">
            </el-table-column>
          </el-table>
          <div style="margin-top: 10px" class="pagination_box">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="listData.pageIndex"
              :page-sizes="[10, 20, 30, 40]"
              :page-size="listData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count"
            >
            </el-pagination>
          </div>
        </div>
      </el-card>
    </div>
  </div>
</template>
<script>
import {
  select_Comprehensive_ByPageAndCount,
  select_Comprehensive_SelectWktById,
} from '../api/api';
export default {
  name: '',
  data() {
@@ -60,6 +118,8 @@
      buffer: null,
      showBufferBoxDialog: false,
      showCoordLocalBoxDialog: false,
      showToponymicLocalBoxDialog: false,
      comprehensive: {},
      bufFrom: {
        val: 50,
      },
@@ -68,6 +128,14 @@
        lat: 32,
        height: 8000000,
      },
      listData: {
        name: null,
        pageIndex: 1,
        pageSize: 10,
      },
      count: 0,
      tableData: [],
      imagePoint: null,
    };
  },
  mounted() {
@@ -144,8 +212,69 @@
      } else if (res.name == 'Coord') {
        if (res.id == '1') {
          this.showCoordLocalBoxDialog = true;
        } else if (res.id == '2') {
          this.showToponymicLocalBoxDialog = true;
          this.getToponymicData();
        }
      }
    },
    handleSizeChange(val) {
      this.listData.pageSize = val;
      this.getToponymicData();
    },
    handleCurrentChange(val) {
      this.listData.pageIndex = val;
      this.getToponymicData();
    },
    async getToponymicData() {
      if (this.listData.tab == '') {
        delete this.listData.tab;
      }
      this.listData.name = this.comprehensive.name;
      const data = await select_Comprehensive_ByPageAndCount(this.listData);
      if (data.code != 200) {
        this.$message.error('列表调用失败');
      }
      this.tableData = data.result;
      this.count = data.count;
    },
    async handleLocation(index, row) {
      const data = await select_Comprehensive_SelectWktById({ id: row.gid });
      if (data.code != 200) {
        this.$message.error('列表调用失败');
      }
      var val = data.result.slice(6, data.result.length - 1);
      val = val.split(' ');
      var position = {
        X: parseFloat(val[0]),
        Y: parseFloat(val[1]),
        Altitude: 2000,
      };
      if (this.imagePoint != null) {
        sgworld.Creator.DeleteObject(this.imagePoint);
        this.imagePoint = null;
      }
      this.imagePoint = sgworld.Creator.CreateLabel(
        position,
        '',
        SmartEarthRootUrl + 'Workers/image/mark.png',
        {
          disableDepthTestDistance: Infinity,
          scale: 0.8,
        },
        0,
        '巡检点'
      );
      sgworld.Navigate.jumpTo({
        //跳转视角
        destination: new Cesium.Cartesian3.fromDegrees(
          parseFloat(val[0]),
          parseFloat(val[1]),
          10000
        ),
      });
    },
    closeBufferBox(res) {
      switch (res) {
@@ -155,6 +284,13 @@
          break;
        case 2:
          this.showCoordLocalBoxDialog = false;
          break;
        case 3:
          this.showToponymicLocalBoxDialog = false;
          if (this.imagePoint != null) {
            sgworld.Creator.DeleteObject(this.imagePoint);
            this.imagePoint = null;
          }
          break;
      }
    },
@@ -248,6 +384,14 @@
  right: 1%;
  bottom: 1%;
}
.toponymicLocalBox {
  width: 750px;
  height: 450x;
  z-index: 40;
  position: absolute;
  right: 1%;
  bottom: 1%;
}
.box-card {
  background-color: rgba(0, 0, 0, 0.6);
  border: 1px solid rgba(32, 160, 255, 0.6);
@@ -259,4 +403,46 @@
/deep/ .el-form-item__label {
  color: white !important;
}
/deep/ .el-input__inner {
  background: rgba(255, 255, 255, 0.2) !important;
  color: white !important;
}
::v-deep .el-table,
.el-table__expanded-cell {
  background-color: transparent;
  color: white;
}
::v-deep .el-table tr {
  background-color: transparent !important;
}
::v-deep .el-table tbody tr:hover > td {
  background-color: rgba(255, 255, 255, 0.2) !important;
}
::v-deep .el-table–enable-row-transition .el-table__body td,
.el-table .cell {
  background-color: transparent !important;
}
::v-deep .el-table th.el-table__cell {
  background-color: transparent !important;
  color: white;
}
::v-deep .el-pager li {
  background-color: transparent !important;
  color: white;
}
::v-deep .btn-prev {
  background-color: transparent !important;
}
::v-deep .btn-next {
  background-color: transparent !important;
  color: white !important;
}
::v-deep .el-pagination__total {
  color: white;
}
::v-deep .el-pagination__jump {
  color: white;
}
</style>