/**
* 工具栏-测量
*/
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);
}
);
},
}
}