GuLiMmo
2024-03-08 016de324c0145632532fcd5450b96a2d1291dac6
src/utils/cesium/use-map-draw.ts
@@ -22,6 +22,7 @@
}
interface tragetPoint {
  position: Cesium.Cartesian3
  isUseGlobalHeight: boolean,
  eventList: eventParmas[]
}
@@ -122,9 +123,10 @@
  //  记录点位信息
  let cartesianArr: Cesium.Cartesian3[] = []
  //   绘制路线
  // 绘制路线
  // 起飞点
  // let btmStartPoint: Cesium.Cartesian3 | null = null
  const drawWayline = async (entities?: Cesium.Entity[], kmlStr?: string) => {
    console.log(kmlStr)
    if (!entities && !kmlStr) {
      dataSource.show = false
    }
@@ -149,6 +151,23 @@
    })
    // 起飞点
    let btmStartPoint = null
    // 获取文件中的起飞点
    const startPointRegStr = getKmlParams(kmlRes, true, {
      name: 'takeOffRefPoint',
      findRegx: '([\\s\\S]*?)',
    }) || ['', '0.00000,0.00000,0.00000']
    const startPointPosition = startPointRegStr[1].split(',')
    btmStartPoint = Cesium.Cartesian3.fromDegrees(
      Number(startPointPosition[1]),
      Number(startPointPosition[0]),
      Number(startPointPosition[2])
    )
    // 参考起飞点“海拔高度,与“参考起飞点”中的椭球高度对应
    // const posterHeightRegStr = getKmlParams(kmlRes, true, {
    //   name: 'takeOffRefPointAGLHeight',
    //   findRegx: '([\\s\\S]*?)',
    // }) || ['', 0]
    // const posterHeight = Number(posterHeightRegStr[1])
    // 判断是否存在实体集
    if (entities) {
      cartesianArr = []
@@ -172,15 +191,23 @@
        name: 'height',
        findRegx: '([\\s\\S]*?)',
      })
      // 获取是否使用全局高度
      const useGlobalHeightRegStr = getKmlParams(point, true, {
        name: 'useGlobalHeight',
        findRegx: '([\\s\\S]*?)',
      }) || ['', '0']
      const isUseGlobalHeight = Boolean(Number(useGlobalHeightRegStr[1]))
      const AslHeight = Number(getPointHeight[1])
      const HeaHeight = Number(getHaeHeight[1])
      entity.position = Cesium.Cartesian3.fromDegrees(longitude, latitude, AslHeight)
      if (i === 0) {
        btmStartPoint = Cesium.Cartesian3.fromDegrees(longitude, latitude, 0)
      }
      // 创建广告牌信息
      const title = Number(i + 1) === 1 ? 'S' : i
      const billboard = createTriangleMarker(title, '#61d396')
      const title = Number(i + 1) === 1 ? 'S' : i + 1
      let billboard = null
      if (isUseGlobalHeight) {
        billboard = createTriangleMarker(title, '#61d396')
      } else {
        billboard = createTriangleMarker(title, '#409eff')
      }
      // 修改id
      entity._id = 'tragetPoint' + i
      // 修改广告牌样式
@@ -228,6 +255,7 @@
      // 当前航线点位事件信息等
      waylinePointsEvent.value.push({
        position: entity.position._value,
        isUseGlobalHeight,
        eventList: [],
      })
    }