forked from drone/command-center-dashboard

chenyao
2025-04-14 4801a4a6f26d62e3c0aa92332805d676ee918db3
src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJobDetails/DeviceJobDetailsMap.vue
@@ -8,44 +8,12 @@
import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz'
import ImageTrailMaterial from '@/utils/cesium/ImageTrailMaterial'
import lineImg from '@/assets/images/arrow-right-blue.png'
import uavImg from '@/assets/images/home/useUavHome/uavImg.png'
import rwqfdImg from '@/assets/images/signMachineNest/rwqfd.png'
import endPointImg from '@/assets/images/EndPointicon.png'
import { addBlueFilter } from '@/utils/cesium/common'
import { flyVisual } from '@/utils/cesium/mapUtil'
const props = defineProps(['detailsData'])
const filterLayer = (options,viewer) => {
   const { bInvertColor, bFilterColor, filterColor } = options
   const color = new Cesium.Color.fromCssColorString(filterColor)
   const filterRGB = [
      Math.round(color.red * 255),
      Math.round(color.green * 255),
      Math.round(color.blue * 255)
   ]
   let fragShader = viewer.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources
   for (let i = 0; i < fragShader.length; i++) {
      const strS = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
      let strT = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
      if (bInvertColor) {
         strT += `
          color.r = 1.0 - color.r;
          color.g = 1.0 - color.g;
          color.b = 1.0 - color.b;
        `
      }
      if (bFilterColor) {
         strT += `
          color.r = color.r * ${filterRGB[0]}.0/255.0;
          color.g = color.g * ${filterRGB[1]}.0/255.0;
          color.b = color.b * ${filterRGB[2]}.0/255.0;
        `
      }
      fragShader[i] = fragShader[i].replace(strS, strT)
   }
}
const imageryProvider_ammapSL = new Cesium.UrlTemplateImageryProvider({
   url: 'https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
@@ -131,20 +99,6 @@
   })
}
// 飞到中心点
function flyToPoints(lngLatArr) {
   if (!Array.isArray(lngLatArr) || lngLatArr.length === 0) return
   const positions = lngLatArr.map(([lon, lat]) =>
      Cesium.Cartesian3.fromDegrees(Number(lon), Number(lat))
   )
   // 计算包围盒 BoundingSphere(所有点的外接球)
   const boundingSphere = Cesium.BoundingSphere.fromPoints(positions)
   viewer.camera.flyToBoundingSphere(boundingSphere, {
      duration: 0,
      offset: new Cesium.HeadingPitchRange(0, 0, boundingSphere.radius * 2),
   })
}
// 异步解析kmz文件
const analysis = async url => {
   return new Promise(async resolve => {
@@ -160,11 +114,10 @@
const drawLine = async () => {
   const res = await Promise.all(props.detailsData.way_lines.map(item => analysis(item.url)))
   res.map(item => renderingLine(item))
   console.log(res,'jiexi')
   const allPoint = res
      .flatMap(item => item.Placemark)
      .map(item => item.Point.coordinates.split(','))
   flyToPoints(allPoint)
   flyVisual(allPoint,viewer)
}
const removeMap = () => {