forked from drone/command-center-dashboard

张含笑
2025-04-11 7b3de0d64e0ec5b932ee04c6a2126606a64e2962
src/views/TaskManage/TaskIntermediateContent/initPointWayline.js
@@ -21,22 +21,29 @@
 * 
 * @param { 单点航线 相关功能} url 
 */
export const initPointWayline = (url) => {
export const initPointWayline = () => {
  
  let viewer = window.$viewer;
  let viewer = null;
  // 解析kmz文件
  const parsingFiles = async (url) => {
    const { fileInfoObj } = analyzeKmzFile(`${url}?_t=${new Date().getTime()}`);
    const xmlStr = fileInfoObj['wpmz/template.kml']
    const xmlJson = XMLToJSON(xmlStr)?.['Document']
  const parsingFiles = async (url,viewer) => {
    viewer = viewer;
    console.log('initPointWayline', viewer);
    const res = await analyzeKmzFile(`${url}?_t=${new Date().getTime()}`)
      const waylinesXML = await res.fileInfoObj['wpmz/waylines.wpml']
      const xmlJson = XMLToJSON(waylinesXML)?.['Document'];
    if (xmlJson.Folder.Placemark.length) return;
    drawWayline(xmlJson)
  };
  // 在地图上画线
  const drawWayline = (xmlJson) => {
    const points = xmlJson?.['Folder']?.['Placemark'];
    let positions = [];
    // 获取点的位置
    const points = xmlJson.Folder.Placemark;
    console.log('points', points);
    getPositionsHeight(points, viewer, 100).then((result) => {
      console.log(result);
      positions = result.map((item) => {
        return Cesium.Cartesian3.fromDegrees(
          Number(item.longitude),
@@ -46,7 +53,29 @@
      });
      result.forEach((item, index) => {
        let setting = {};
        setting = {
          id: 'route_point_' + index,
          position: positions[index],
          label: {
            text: `${index + 1}`,
            font: 'bold 14px serif',
            style: globalCesium.LabelStyle.FILL,
            verticalOrigin: globalCesium.VerticalOrigin.CENTER, // 垂直居中
            horizontalOrigin: globalCesium.HorizontalOrigin.CENTER, // 水平居中
            pixelOffset: new globalCesium.Cartesian2(0, 0), // 根据需要调整偏移量
            eyeOffset: new globalCesium.Cartesian3(0, 0, -10) // 使标签在点的上方
          },
          point: {
            pixelSize: 24,
            color: new globalCesium.Color.fromBytes(255, 186, 0, 255),
          },
        }
        viewer.entities.add(setting)
      });
    });
  };
  return { parsingFiles };
};