/** * 工具栏-测量 */ 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) { console.log(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); } ); }, } }