/** * 工具栏-测量 */ var Cesium = window.Cesium; var colorAll = { point: Cesium.Color.fromCssColorString('#ff0000'), polyline: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6), polygon: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6), }; var measureData = new Map(); export default { methods: { // 清除测量 clearMeasure(id) { if (id) { let data = measureData.get(id); data && data.deleteObject && data.deleteObject(); // 体积方量 data && data.cleanUp && data.cleanUp(); measureData.delete(id); } else { measureData.forEach((data) => { data.deleteObject && data.deleteObject(); // 体积方量 data.cleanUp && data.cleanUp(); }); measureData.clear(); } }, // 打开测量结果弹窗 openMeasureResultInfo(name, data) { let info = ''; switch (name) { case '水平距离': case '空间距离': info = '总长度:' + data.distance[data.distance.length - 1]; break; case '海拔高度': info = '海拔:' + data.height; break; case '垂直高度': info = `${data.gddistance}
${data.kjdistance}
${data.spdistance}`; break; case '表面面积': case '平面面积': info = data.mj; break; case '角度': data.labels.forEach((label) => { info += label.label.text.getValue() + '
'; }); break; case '体积方量': info = `填方:${ data.volume.fill.toFixed(4) + data.unit.fill }
挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`; break; } return ( this.$refs && this.$refs.mapinfo && this.$refs.mapinfo.open(name, info, { close: () => { // 清除测量 this.clearMeasure(data.id); }, }) ); }, //量算-水平直线距离 horizontalMeasure(callback) { let measure = window.sgworld.Command.execute(0, 2, colorAll, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('水平距离', data); callback && typeof callback === 'function' && callback(data); }); }, //量算-空间距离 spaceMeasure(callback) { let measure = window.sgworld.Command.execute(0, 10, colorAll, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('空间距离', data); callback && typeof callback === 'function' && callback(data); }); }, //量算-海拔高度 Altitude(callback) { let measure = window.sgworld.Command.execute(1, 11, colorAll, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('海拔高度', data); callback && typeof callback === 'function' && callback(data); }); }, //量算-垂直高度 VerticalHeight(callback) { let measure = window.sgworld.Command.execute(0, 5, colorAll, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('垂直高度', data); callback && typeof callback === 'function' && callback(data); }); }, //量算-表面面积 surfaceArea(callback) { let measure = window.sgworld.Command.execute( 0, 8, { ...colorAll, tin: true, // 是否显示tin三角网 onlyTerrain: false, // 是否只测量精细地形 }, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('表面面积', data); callback && typeof callback === 'function' && callback(data); } ); }, //量算-平面面积 tyArea(callback) { let measure = window.sgworld.Command.execute(0, 3, colorAll, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('平面面积', data); callback && typeof callback === 'function' && callback(data); }); }, //量算-角度 measureAngle(callback) { let measure = window.sgworld.Command.execute(0, 12, colorAll, (data) => { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, measure); this.openMeasureResultInfo('角度', data); callback && typeof callback === 'function' && callback(data); }); }, // 量算-体积方量 analysisVolume(callback) { let volumetricMeasurementTool = window.sgworld.Creator.createVolumetricMeasureTool(); volumetricMeasurementTool.startDrawing( { ...colorAll, onlyTerrain: false }, 'auto', (data) => { if (volumetricMeasurementTool.popupData) { volumetricMeasurementTool.popupData.value = `填方:${ data.volume.fill.toFixed(4) + data.unit.fill }
挖方:${data.volume.dig.toFixed(4) + data.unit.dig}`; } else { data.id = window.sgworld.Core.getuid(); measureData.set(data.id, volumetricMeasurementTool); let popupData = this.openMeasureResultInfo('体积方量', data); volumetricMeasurementTool.popupData = popupData; } callback && typeof callback === 'function' && callback(data); } ); }, }, };