| | |
| | | import * as turf from "@turf/turf"; |
| | | const menuTool = { |
| | | toolMenu: null, |
| | | toolFlag: null, |
| | | oldLeftMenuId: null, |
| | | colorAll: {}, |
| | | squareOjb: [], |
| | | topTools(res) { |
| | | this.clearTopTools(); |
| | | // this.clearTopTools(); |
| | | if (res.id == this.toolFlag) { |
| | | this.toolFlag = null; |
| | | return; |
| | |
| | | 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; |
| | |
| | | break; |
| | | } |
| | | }, |
| | | |
| | | leftTools(res) { |
| | | this.clearLeftTools(); |
| | | 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; |
| | |
| | | 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) { |
| | | 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); |
| | | }, |
| | | // 创建图形 |
| | | 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); |
| | | earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE2D; |
| | | // var handle = new SmartEarth.Cesium.ScreenSpaceEventHandler( |
| | | // earthCtrl.viewer.scene.canvas |
| | | // ); |
| | | }, |
| | | |
| | | //坐标定位 |
| | |
| | | earthCtrl.measure.measureHeight(function (e) {}); |
| | | }, |
| | | //高程测量 |
| | | heightMeasure() {}, |
| | | 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.measure.lineLength(function (e) {}); |
| | | earthCtrl.analysis.getDistanceHorizontal(function (e) { |
| | | console.info(e); |
| | | }); |
| | | }, |
| | | //点漫游 |
| | | pointRoam() {}, |
| | | pointRoam() { |
| | | earthCtrl.Analysis.setPointFly(); |
| | | }, |
| | | //线漫游 |
| | | lineRoam() {}, |
| | | |
| | | 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() { |
| | | if (this.toolFlag) { |
| | | switch (this.toolFlag) { |
| | | clearTopTools(id) { |
| | | if (id) { |
| | | switch (id) { |
| | | case "a2": |
| | | break; |
| | | case "a3": |
| | |
| | | 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 = null; |
| | | } |
| | | }, |
| | | clearLeftTools() {}, |
| | | clearLeftTools(res) {}, |
| | | }; |
| | | export default menuTool; |