guoshilong
2023-11-14 6d3a25365554f9c7c98b8a58fba7b7aa9b3f9e9f
Merge remote-tracking branch 'origin/demo' into demo

# Conflicts:
# src/hooks/use-cesium-tsa.ts
2 files modified
52 ■■■■■ changed files
src/components/GMap.vue 29 ●●●● patch | view | raw | blame | history
src/hooks/use-cesium-tsa.ts 23 ●●●●● 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>
@@ -188,7 +189,8 @@
                    <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 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>
@@ -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
@@ -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)
  }
  // 添加线段
@@ -312,6 +334,7 @@
    getEntityById,
    updateEntityPosition,
    addPolyline,
    addEllipse,
    loadGeoJson,
    removeAllDataSource
  }