import * as Cesium from 'cesium'; import cesiumOperation from '@/utils/cesium-tsa'; import { analyzeKmzFile, XMLToJSON } from '@/utils/cesium/kmz.js' import { cartesian3Convert, getCenterPoint, getLnglatDist } from '@/utils/cesium/mapUtil.js' import { getLnglatAltitude, getPositionsHeight } from '@/utils/cesium/mapUtil' const { addPoint, getEntityById, removeById, removeAllPoint, addLeftClickEvent, removeLeftClickEvent, addRightClickEvent, removeRightClickEvent, flyTo, pointInitEvent, pointUnInitEvent } = cesiumOperation() /** * * @param { 单点航线 相关功能} url */ export const initPointWayline = () => { let viewer = null; // 解析kmz文件 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) => { 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), Number(item.latitude), item.FinalHeight, ) }); 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 }; };