| | |
| | | elevationTool: null, |
| | | rainEffect: null, |
| | | snowEffect: null, // 新增雪效果实例 |
| | | regionTerrain: null, |
| | | polygonPosition: [], |
| | | |
| | | init(earthCtrl) { |
| | | this.earthCtrl = earthCtrl; |
| | |
| | | this.snowEffect.show(show); |
| | | } |
| | | }, |
| | | // 区域划分工具 |
| | | hfqy() { |
| | | // 初始化区域地形 |
| | | this.regionTerrain = earthCtrl.factory.createRegionTerrain({}); |
| | | this.polygonPosition = []; |
| | | |
| | | // 创建绘制工具 |
| | | const drawTool = earthCtrl.shapeTool.createDrawShapeTool((e) => { |
| | | try { |
| | | if (!e || !e.result) { |
| | | throw new Error('Invalid drawing result'); |
| | | } |
| | | |
| | | // 转换坐标并存储 |
| | | const polygonI = []; |
| | | for (const point of e.result) { |
| | | const cartographic = earthCtrl.coreMap.scene.globe.ellipsoid.cartesianToCartographic(point); |
| | | const lon = Cesium.Math.toDegrees(cartographic.longitude); |
| | | const lat = Cesium.Math.toDegrees(cartographic.latitude); |
| | | |
| | | polygonI.push(lon, lat, 0); |
| | | this.polygonPosition.push(lon, lat); |
| | | } |
| | | |
| | | // 设置区域地形 |
| | | this.regionTerrain.setPositions(this.polygonPosition); |
| | | this.regionTerrain.setRegionEnabled(true); |
| | | |
| | | // 清除绘制工具 |
| | | drawTool.removeFromMap(); |
| | | } catch (error) { |
| | | console.error('Error during region drawing:', error); |
| | | drawTool.removeFromMap(); |
| | | } |
| | | }); |
| | | |
| | | return drawTool; |
| | | }, |
| | | // 坡向箭头 |
| | | pxjt(colors, angles) { |
| | | this.hfqy() |
| | | this.slopeArrow = earthCtrl.factory.createSlopeArrow({}); |
| | | this.slopeArrow.setColorsAndAngles(colors, angles); |
| | | this.regionTerrain.setPositions(this.polygonPosition); |
| | | this.regionTerrain.setRegionEnabled(true); |
| | | this.slopeArrow.setSlopeType(1); |
| | | }, |
| | | |
| | | // 坡度分析 |
| | | pdfx(option) { |
| | | this.hfqy() |
| | | this.elevationTool = new SmartEarth.ElevationTool(earthCtrl) |
| | | if (option.terrainRender == '1') { |
| | | this.elevationTool.type = 'slope' |
| | |
| | | this.elevationTool.setWidth(option.lineWidth) |
| | | this.elevationTool.setContourColor(option.color); |
| | | this.elevationTool.render(); |
| | | console.log(this.elevationTool, 'eleelelelelelelel') |
| | | }, |
| | | |
| | | // 清理所有分析工具 |
| | | cleanupAnalysisTools() { |
| | | // 坡向箭头 |
| | | pxjt(colors, angles) { |
| | | this.slopeArrow = earthCtrl.factory.createSlopeArrow({}); |
| | | this.slopeArrow.setColorsAndAngles(colors, angles); |
| | | |
| | | // 创建绘制工具 |
| | | const drawTool = earthCtrl.shapeTool.createDrawShapeTool((e) => { |
| | | const polygonI = []; |
| | | const polygonPosition = []; |
| | | for (const i of e.result) { |
| | | const ellipsoid = earthCtrl.coreMap.scene.globe.ellipsoid; |
| | | const cartographic = ellipsoid.cartesianToCartographic(i); |
| | | |
| | | const lon = Cesium.Math.toDegrees(cartographic.longitude); |
| | | const lat = Cesium.Math.toDegrees(cartographic.latitude); // 纬度 |
| | | polygonI.push(lon, lat, 0); |
| | | polygonPosition.push(lon, lat); |
| | | } |
| | | const PolygonArr = []; |
| | | PolygonArr.push({ |
| | | id: earthCtrl.factory.createUUID(), |
| | | polygon: polygonI, |
| | | }); |
| | | |
| | | // 清除绘制工具 |
| | | drawTool.removeFromMap(); |
| | | // 设置坡度箭头的位置和类型 |
| | | this.slopeArrow.setPositions(polygonPosition); |
| | | this.slopeArrow.setSlopeType(1); |
| | | this.slopeArrow.setRegionEnabled(true); |
| | | console.log(this.slopeArrow, 'slope') |
| | | }); |
| | | }, |
| | | // 关闭坡向箭头 |
| | | gbpxjt() { |
| | | if (this.slopeArrow) { |
| | | this.slopeArrow.setSlopeType(0); |
| | | this.slopeArrow = null; |
| | | } |
| | | // 选择区域 |
| | | if (this.regionTerrain) { |
| | | this.regionTerrain.setRegionEnabled(false); |
| | | this.regionTerrain = null; |
| | | } |
| | | this.polygonPosition = []; |
| | | }, |
| | | // 标绘 |
| | | CreateLabel(pic, show) { |