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