| | |
| | | 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 { getCenterPoint } from '@/utils/cesium/mapUtil' |
| | | 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']) |
| | | |
| | |
| | | baseLayer: false, |
| | | fullscreenButton: false, |
| | | }) |
| | | viewer.imageryLayers.addImageryProvider(imageryProvider_ammapSL) |
| | | const gdLayer = viewer.imageryLayers.addImageryProvider(imageryProvider_ammapSL) |
| | | const options = { |
| | | bInvertColor: true, |
| | | bFilterColor: true, |
| | | filterColor: '#4e70a6' |
| | | } |
| | | // 添加蓝色滤镜 |
| | | addBlueFilter(options,viewer,gdLayer) |
| | | |
| | | viewer.scene.morphTo2D(0) |
| | | //设置默认点 |
| | | viewer.camera.setView({ |
| | |
| | | const [lon, lat] = item.Point.coordinates.split(',') |
| | | return Cartesian3.fromDegrees(Number(lon), Number(lat)) |
| | | }) |
| | | // 起点 |
| | | viewer.entities.add({ |
| | | position: positions[0], |
| | | billboard: { |
| | | image: new Cesium.ConstantProperty(uavImg), |
| | | width: 24, |
| | | height: 24, |
| | | image: new Cesium.ConstantProperty(rwqfdImg), |
| | | width: 70, |
| | | height: 70, |
| | | }, |
| | | }) |
| | | // 终点 |
| | | viewer.entities.add({ |
| | | position: positions[positions.length-1], |
| | | billboard: { |
| | | image: new Cesium.ConstantProperty(endPointImg), |
| | | width: 30, |
| | | height: 30, |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 底部对齐 |
| | | }, |
| | | }) |
| | | // 路径线 |
| | | viewer.entities.add({ |
| | | polyline: { |
| | | width: 4, |
| | |
| | | }), |
| | | clampToGround: false, |
| | | }, |
| | | }) |
| | | } |
| | | |
| | | // 飞到中心点 |
| | | 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), |
| | | }) |
| | | } |
| | | |
| | |
| | | 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 = () => { |