/**
|
* 工具栏-测量
|
*/
|
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}<br>${data.kjdistance}<br>${data.spdistance}`
|
break;
|
case '表面面积':
|
case '平面面积':
|
info = data.mj
|
break;
|
case '角度':
|
data.labels.forEach(label => {
|
info += label.label.text.getValue() + "<br>";
|
});
|
break;
|
case '体积方量':
|
info = `填方:${data.volume.fill.toFixed(4) + data.unit.fill}<br>挖方:${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}<br>挖方:${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);
|
}
|
);
|
},
|
}
|
}
|