import * as turf from "@turf/turf";
|
const menuTool = {
|
toolMenu: null,
|
toolFlag: null,
|
oldLeftMenuId: null,
|
colorAll: {},
|
squareOjb: [],
|
topTools(res) {
|
// this.clearTopTools();
|
if (res.id == this.toolFlag) {
|
this.toolFlag = null;
|
return;
|
}
|
this.toolFlag = res.id;
|
switch (res.id) {
|
case "a2": //点漫游
|
this.pointRoam();
|
break;
|
case "a3": //线漫游
|
this.lineRoam();
|
break;
|
case "b2": //表面距离
|
this.surfaceDistance();
|
break;
|
case "b3": //平面面积
|
this.planeDistance();
|
break;
|
case "b4": //高程测量
|
this.heightMeasure();
|
break;
|
case "b5": //垂直高度
|
this.verticalHeight();
|
break;
|
case "c2": //点
|
this.createSimpleGraphic("point");
|
break;
|
case "c3": //文字
|
this.createSimpleGraphic("label");
|
break;
|
case "c4": //线
|
this.createSimpleGraphic("polyline");
|
break;
|
case "c5": //矩形
|
this.createSimpleGraphic("rectangle");
|
break;
|
case "c6": //多边形
|
this.createSimpleGraphic("polyhedron");
|
break;
|
case "d4": //土方量计算
|
this.Volumetric();
|
break;
|
case "d5": //影像对比
|
this.CurtainContrast();
|
break;
|
case "g1": //坐标定位
|
this.Coordposition();
|
break;
|
}
|
},
|
|
leftTools(res) {
|
this.clearLeftTools(res);
|
|
if (this.oldLeftMenuId == "l3") {
|
earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE3D;
|
}
|
this.oldLeftMenuId = res.id;
|
|
switch (res.id) {
|
case "l1":
|
break;
|
case "l2":
|
break;
|
case "l3": //在线制图
|
this.setThematicMap();
|
break;
|
case "l4":
|
break;
|
case "l5":
|
break;
|
case "l6":
|
break;
|
}
|
},
|
thematicTools(res) {
|
switch (res.id) {
|
case "t2":
|
this.createSimpleGraphic("rectangle", "square");
|
break;
|
case "t3":
|
this.delRectangle();
|
break;
|
}
|
},
|
//删除正方形
|
delRectangle() {
|
this.squareOjb.forEach((e) => {
|
Viewer.entities.remove(e);
|
});
|
},
|
// 矩形正方形
|
createRectangle(entity) {
|
this.delRectangle();
|
var west = Cesium.Math.toDegrees(
|
entity.rectangle._coordinates.getValue().west
|
); // 根据弧度获取到经度
|
var east = Cesium.Math.toDegrees(
|
entity.rectangle._coordinates.getValue().east
|
); // 根据弧度获取到纬度
|
var north = Cesium.Math.toDegrees(
|
entity.rectangle._coordinates.getValue().north
|
); // 根据弧度获取到经度
|
var south = Cesium.Math.toDegrees(
|
entity.rectangle._coordinates.getValue().south
|
); // 根据弧度获取到纬度
|
|
var ss = turf.square([west, south, east, north]);
|
var west1 = ss[0];
|
var east1 = ss[2];
|
var north1 = ss[3];
|
var south1 = ss[1];
|
var geometry = Cesium.Rectangle.fromDegrees(west1, south1, east1, north1);
|
|
// var e = Viewer.entities.add({
|
// name: "正方",
|
// polygon: {
|
// hierarchy: geometry1,
|
// //height : 100000,
|
// material: Cesium.Color.RED,
|
// outline: true,
|
// outlineColor: Cesium.Color.RED,
|
// },
|
// });
|
const stripeMaterial = new Cesium.StripeMaterialProperty({
|
evenColor: Cesium.Color.WHITE.withAlpha(0.5),
|
oddColor: Cesium.Color.BLUE.withAlpha(0.5),
|
repeat: 5.0,
|
});
|
var e = Viewer.entities.add({
|
rectangle: {
|
coordinates: geometry,
|
outline: true,
|
outlineColor: Cesium.Color.WHITE,
|
outlineWidth: 4,
|
stRotation: Cesium.Math.toRadians(45),
|
material: stripeMaterial,
|
},
|
});
|
this.squareOjb.push(e);
|
// earthCtrl.Creator.SimpleGraphic.clear();
|
Viewer.entities.remove(entity);
|
debugger
|
window.functionForJs({
|
type: 'exportMap',
|
value: true
|
})
|
},
|
// 创建图形
|
createSimpleGraphic(type, scene) {
|
earthCtrl.Creator.createSimpleGraphic(type, {}, (entity) => {
|
if (scene === "square") {
|
this.createRectangle(entity);
|
}
|
});
|
},
|
//在线制图
|
setThematicMap() {
|
earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE2D;
|
// var handle = new SmartEarth.Cesium.ScreenSpaceEventHandler(
|
// earthCtrl.viewer.scene.canvas
|
// );
|
},
|
|
//坐标定位
|
Coordposition() { },
|
//影像对比
|
CurtainContrast() {
|
this.toolMenu = earthCtrl.analysis.createCurtainContrast({
|
leftIndex: 0,
|
rightIndex: 1,
|
});
|
},
|
//土方量计算
|
Volumetric() {
|
const Volumetric = earthCtrl.analysis.createVolumetricMeasure({});
|
Volumetric.startDrawing();
|
},
|
//垂直高度
|
verticalHeight() {
|
earthCtrl.measure.measureHeight(function (e) { });
|
},
|
//高程测量
|
heightMeasure() {
|
var colorAll = {
|
point: Cesium.Color.fromCssColorString("#ff0000"),
|
polyline: Cesium.Color.fromCssColorString("#ffff0050"),
|
polygon: Cesium.Color.fromCssColorString("#ffff0050"),
|
};
|
earthCtrl.Analysis.altitude(colorAll, () => { });
|
},
|
//平面面积
|
planeDistance() {
|
earthCtrl.analysis.getPlaneArea(function (e) { });
|
},
|
//表面距离
|
surfaceDistance() {
|
earthCtrl.analysis.getDistanceHorizontal(function (e) {
|
console.info(e);
|
});
|
},
|
//点漫游
|
pointRoam() {
|
earthCtrl.Analysis.setPointFly();
|
},
|
//线漫游
|
lineRoam() {
|
earthCtrl.Command.execute(2, 3, "", (data) => {
|
data.showPoint = false;
|
data.showLine = true;
|
data.mode = 1;
|
// 弹窗数据
|
window.PathAnimationData = {
|
flyData: data,
|
};
|
window.PathAnimationData.winIndex = layer.open({
|
type: 2,
|
title: "路径动画",
|
shade: false,
|
area: ["352px", "690px"],
|
offset: "r",
|
skin: "other-class",
|
content: SmartEarthRootUrl + "Workers/path/Path.html",
|
end: function () {
|
PathAnimationData.fly && PathAnimationData.fly.exit();
|
},
|
});
|
});
|
},
|
//清除按钮
|
clearALL(id) {
|
id.forEach((e) => {
|
this.clearTopTools(e);
|
});
|
},
|
//清除方法
|
clearTopTools(id) {
|
if (id) {
|
switch (id) {
|
case "a2":
|
break;
|
case "a3":
|
break;
|
case "b2":
|
earthCtrl.tools.browse();
|
break;
|
case "b3":
|
earthCtrl.analysis.deleteObject();
|
case "b4":
|
earthCtrl.Analysis.clearMeasure();
|
case "b5":
|
earthCtrl.tools.browse();
|
break;
|
case "c2": //点
|
earthCtrl.Creator.SimpleGraphic.clear();
|
break;
|
case "c3": //文字
|
earthCtrl.Creator.SimpleGraphic.clear();
|
break;
|
case "c4": //线
|
earthCtrl.Creator.SimpleGraphic.clear();
|
break;
|
case "c5": //矩形
|
earthCtrl.Creator.SimpleGraphic.clear();
|
break;
|
case "c6": //多边形
|
earthCtrl.Creator.SimpleGraphic.clear();
|
break;
|
case "d5":
|
debugger;
|
this.toolMenu.removeFromMap();
|
break;
|
}
|
// this.toolFlag = null;
|
this.toolMenu = null;
|
}
|
},
|
clearLeftTools(res) { },
|
};
|
export default menuTool;
|