xieb
2023-11-14 e71b5f55786a79466807cea2ace9e4255e1740f2
Merge remote-tracking branch 'origin/demo' into demo

# Conflicts:
# src/hooks/use-cesium-tsa.ts
2 files modified
87 ■■■■ changed files
src/components/GMap.vue 59 ●●●●● patch | view | raw | blame | history
src/hooks/use-cesium-tsa.ts 28 ●●●●● patch | view | raw | blame | history
src/components/GMap.vue
@@ -150,7 +150,8 @@
            <a-col span="6">
              <a-tooltip title="风速">
                <span>W.S</span>
                <span class="ml5">{{ deviceInfo.device.wind_speed === str ? str : (deviceInfo.device.wind_speed / 10).toFixed(2) + ' m/s' }}</span>
                <span class="ml5">{{ deviceInfo.device.wind_speed === str ? str : (deviceInfo.device.wind_speed /
                  10).toFixed(2) + ' m/s' }}</span>
              </a-tooltip>
            </a-col>
          </a-row>
@@ -174,26 +175,27 @@
    <div class="osd-panel fz12" v-if="osdVisible.visible">
      <div class="fz16 pr5 flex-align-center flex-row flex-justify-between"
        style="border-bottom: 1px solid #515151; height: 10%;">
        <div class="flex-align-center flex-justify-center"  style="display: flex;">
        <div class="flex-align-center flex-justify-center" style="display: flex;">
          <div v-if="osdVisible.latest_wayline_job" class="flex-column flex-align-center flex-justify-center">
              <div class="task_wrapper">
                <div class="task_content task_content_way" v-if="deviceInfo.device && deviceInfo.device?.mode_code === 5">
                  <div class="task_status">
                    <ContainerOutlined />
                    <span>执行任务中</span>
                  </div>
            <div class="task_wrapper">
              <div class="task_content task_content_way" v-if="deviceInfo.device && deviceInfo.device?.mode_code === 5">
                <div class="task_status">
                  <ContainerOutlined />
                  <span>执行任务中</span>
                </div>
                <div class="task_content" v-else>
                  <div class="task_status">
                    <ContainerOutlined />
                    <span>待执行</span>
                  </div>
                  <div class="task_info">{{osdVisible.latest_wayline_job.is_later ? '今天': '明天'}}{{convertTimestampToDate(osdVisible.latest_wayline_job.begin_time, 'hh:mm')}}</div>
                </div>
                <div class="task_title">{{osdVisible.latest_wayline_job.name}}</div>
              </div>
              <div class="task_content" v-else>
                <div class="task_status">
                  <ContainerOutlined />
                  <span>待执行</span>
                </div>
                <div class="task_info">{{ osdVisible.latest_wayline_job.is_later ? '今天' :
                  '明天' }}{{ convertTimestampToDate(osdVisible.latest_wayline_job.begin_time, 'hh:mm') }}</div>
              </div>
              <div class="task_title">{{ osdVisible.latest_wayline_job.name }}</div>
            </div>
          </div>
          <span :style="[osdVisible.latest_wayline_job?'margin-left:20px':'']">{{ osdVisible.gateway_callsign }}</span>
          <span :style="[osdVisible.latest_wayline_job ? 'margin-left:20px' : '']">{{ osdVisible.gateway_callsign }}</span>
        </div>
        <div>
          <a style="color: white;" @click="closeOsdWindow">
@@ -779,6 +781,7 @@
import { useConnectMqtt } from './g-map/use-connect-mqtt'
import Cesium from './cesiumMap/cesium.vue'
import { convertTimestampToDate } from '/@/utils/time'
import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
export default defineComponent({
  components: {
    BorderOutlined,
@@ -808,6 +811,7 @@
  name: 'GMap',
  props: {},
  setup () {
    const cesium = cesiumOperation()
    const useMouseToolHook = useMouseTool()
    const useGMapManageHook = useGMapManage()
    const deviceTsaUpdateHook = deviceTsaUpdate()
@@ -1233,6 +1237,21 @@
        deep: true
      }
    )
    watch(() => openDroneControl.value, (is: boolean) => {
      if (!is) {
        cesium.removeById('rangeEllipse')
        return
      }
      // 设置无人机范围
      // cesium.removeById('rangeEllipse')
      const { dock: { basic_osd } } = deviceInfo
      const ellipseSetting = {
        longitude: basic_osd.longitude,
        latitude: basic_osd.latitude
      }
      cesium.addEllipse(ellipseSetting)
      cesium.flyTo(ellipseSetting, 5, 20000)
    })
    function draw (type: MapDoodleType, bool: boolean) {
      state.currentType = type
@@ -1600,10 +1619,12 @@
  min-height: 2px;
  border-radius: 2px;
}
.task_wrapper {
  display: flex;
  align-items: center;
  font-size: 12px;
  .task_content {
    background-color: #41bbfa;
    padding: 2px 4px;
@@ -1612,9 +1633,9 @@
  .task_content_way {
    background-color: #19be6b;
  }
  .task_title {
    margin-left: 5px;
    font-size: 14px;
  }
}
</style>
}</style>
src/hooks/use-cesium-tsa.ts
@@ -37,6 +37,12 @@
  pitch?: number
  roll?: number
}
interface ellipseOption {
  longitude: number
  latitude: number
}
// 定义全局的viewer变量防止重复生成
// eslint-disable-next-line no-var
var viewer: Cesium.Viewer | null = null
@@ -54,8 +60,8 @@
      '&style=default&format=tiles&tk=' + TDT_Token
  // 标准地图注记
  const TID_STAND = 'https://{s}.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0' +
  '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
  '&style=default&format=tiles&tk=' + TDT_Token
    '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
    '&style=default&format=tiles&tk=' + TDT_Token
  // 天地图图层变量
  const imageryProvider_tdt = new Cesium.WebMapTileServiceImageryProvider({
    url: TDT_IMG_C,
@@ -161,6 +167,22 @@
      label: pointOption.label,
      id: pointOption.id,
    })
  }
  // 添加半径为7公里的范围的圆
  const addEllipse = ({ longitude, latitude }: ellipseOption) => {
    if (!longitude && !latitude) return
    const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
    viewer?.entities.add({
      position,
      id: 'rangeEllipse',
      name: 'rangeEllipse',
      ellipse: {
        semiMinorAxis: 7000.0,
        semiMajorAxis: 7000.0,
        material: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.3),
      }
    })
    console.log(viewer?.entities)
  }
  // 添加线段
@@ -314,5 +336,7 @@
    addPolyline,
    loadGeoJson,
    removeAllDataSource
    addPolyline,
    addEllipse
  }
}