From 36fbd1e5a40e319e6ac5f43d11c99ba4b66e93a3 Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期三, 29 十一月 2023 16:50:16 +0800 Subject: [PATCH] 坡度分析下载修改 --- src/assets/js/Map/menuTool.js | 795 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 601 insertions(+), 194 deletions(-) diff --git a/src/assets/js/Map/menuTool.js b/src/assets/js/Map/menuTool.js index 67a5646..e8c1774 100644 --- a/src/assets/js/Map/menuTool.js +++ b/src/assets/js/Map/menuTool.js @@ -1,14 +1,16 @@ import * as turf from "@turf/turf"; -import WKT from 'terraformer-wkt-parser' +import WKT from "terraformer-wkt-parser"; import rightServer from "./rightServer"; -import config from "./config"; -import CryptoJS from 'crypto-js'; - +// import config from "../../../../public/config/config"; +import CryptoJS from "crypto-js"; +// import { Store } from "vuex"; +import store from "@/store"; +import temporaryTool from "./temporaryTools"; const menuTool = { toolMenu: null, toolFlag: null, oldLeftMenuId: null, - + bufferSize: 100, squareOjb: [], localPoint: null, colorAll: { @@ -16,8 +18,15 @@ polyline: SmartEarth.Cesium.Color.fromCssColorString("#ffff0050"), polygon: SmartEarth.Cesium.Color.fromCssColorString("#ffff0050"), }, + exportSquare: null, + imageryProvider: null, + legendBox: null, topTools(res) { this.toolFlag = res.id; + + + Viewer.scene.globe.depthTestAgainstTerrain = false + Viewer.scene.pickTranslucentDepth = false switch (res.id) { case "a2": //鐐规极娓� this.pointRoam(); @@ -52,22 +61,35 @@ case "c6": //澶氳竟褰� this.createSimpleGraphic("polygon"); break; - case "d2"://绛夐珮绾垮垎鏋� + case "d2": //绛夐珮绾垮垎鏋� this.setcontour(); - break - case "d3"://鍧″害鍒嗘瀽 + break; + case "d3": //鍧″害鍒嗘瀽 this.setSlopeMap(); - break + break; case "d4": //鍦熸柟閲忚绠� this.Volumetric(); break; case "d5": //褰卞儚瀵规瘮 this.CurtainContrast(); break; - case "e1"://蹇収 + + case "d6": //闃村奖鍒嗘瀽 + this.shadowAnalysis(); + break; + case "e1": //蹇収 this.snapshot(); break; - case "f1"://绌洪棿鏌ヨ + case "f2": //鐐规煡璇� + this.setClearLocation('绌洪棿鏌ヨ_鏍囩粯'); + this.spatialPointQuery(); + break; + case "f3": //绾挎煡璇� + this.setClearLocation('绌洪棿鏌ヨ_鏍囩粯'); + this.spatialLineQuery(); + break; + case "f4": //闈㈡煡璇� + this.setClearLocation('绌洪棿鏌ヨ_鏍囩粯'); this.spatialQuery(); break; case "g1": //鍧愭爣瀹氫綅 @@ -75,85 +97,193 @@ break; } }, + + shadowAnalysis() { + if (earthCtrl.shadows) { + Viewer.animation.container.style.visibility = "hidden"; + Viewer.timeline.container.style.visibility = "hidden"; + Viewer.clock.shouldAnimate = false; + Viewer.scene.globe.enableLighting = false; + earthCtrl.shadows = false; + return + } + Viewer.clock.shouldAnimate = true; + Viewer.scene.globe.enableLighting = true; + Viewer.animation.container.style.visibility = "visible"; + Viewer.timeline.container.style.visibility = "visible"; + earthCtrl.shadows = true; + earthCtrl.terrainShadows = SmartEarth.Cesium.ShadowMode.ENABLED + + earthCtrl.shadowMap.size = 1024 + }, setLocalPosition(res) { if (this.localPoint) { this.setLocalPositionClose(); } - var position = { X: parseFloat(res.lon), Y: parseFloat(res.lat), Altitude: parseFloat(res.alt) }; - this.localPoint = window.sgworld.Creator.CreateImageLabel( - position, - config.StaticFileBaseUrl + "/Workers/image/mark.png", - {}, - 0, - "鏍囩鐐�" - ); - var id = this.localPoint.item.id; - window.sgworld.Navigate.flyToObj(this.localPoint.item); + this.localPoint = window.Viewer.entities.add({ + name: '鍧愭爣瀹氫綅', + position: Cesium.Cartesian3.fromDegrees(parseFloat(res.lon), parseFloat(res.lat), res.alt == null ? 0 : parseFloat(res.alt)), + billboard: { + image: config.StaticFileBaseUrl + '/Workers/image/location.png', + // 璁剧疆璐村湴 + heightReference: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.4), + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + scale: 0.3, + }, + }); + this.setViewerFlyTo(this.localPoint) }, setLocalPositionClose() { - this.localPoint.deleteObject(); - this.localPoint = null; + if (this.localPoint) { + // this.localPoint.deleteObject(); + window.Viewer.entities.remove(this.localPoint) + this.localPoint = null; + } + }, //鍧″害鍒嗘瀽 setSlopeMap() { + + + if (window.esriLayer) { + this.setCloseEsriLayer(); + return + } + sgworld.Creator.createSimpleGraphic('rectangle', {}, (entity) => { + if (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 + ); // 鏍规嵁寮у害鑾峰彇鍒扮含搴� + sgworld.Creator.SimpleGraphic.clear(); + this.legendBox = [ + west, south, east, north + ] + this.addTMSLayer(this.legendBox) + } + }); + + }, + + + addTMSLayer(obj) { + + var esri = new Cesium.WebMapServiceImageryProvider({ + url: config.esri, + name: 'esriLayer', + rectangle: Cesium.Rectangle.fromDegrees(obj[0], obj[1], obj[2], obj[3]), + crs: 'EPSG:4326', + //transparent: true + parameters: { + format: "image/png", + layers: [0] + } + }); + window.esriLayer = Viewer.imageryLayers.addImageryProvider(esri); + store.state.showlegendLayer = true; + }, + + + + + + + + + + + + + + + + + + setSlopeMap1() { const globe = Viewer.scene.globe; if (window.material) { window.material = null; globe.material = null; Viewer.scene.globe.enableLighting = false; - return + store.state.slopeQueyFlag = false; + store.state.showSlopeQuey = false; + return; } - Viewer.scene.globe.enableLighting = true; - let shadingUniforms = {}; - window.material = Cesium.Material.fromType("ElevationRamp"); - shadingUniforms = material.uniforms; - shadingUniforms.minimumHeight = -10000; - shadingUniforms.maximumHeight = 10000; + store.state.slopeQueyFlag = true; + window.material = new Cesium.Material({ + fabric: { + type: "ElevationRamp", + uniforms: { + image: config.StaticFileBaseUrl + "Assets/Images/colors75.png", + minimumHeight: -10000, + maximumHeight: 10000, - shadingUniforms.image = this.getColorRamp(); + }, + }, + }); - globe.material = material; + Viewer.scene.globe.material = window.material; }, - getColorRamp() { - const ramp = document.createElement("canvas"); - ramp.width = 100; - ramp.height = 1; - const ctx = ramp.getContext("2d"); - let values = [0, 0.083, 0.166, 0.25, 0.333, 0.416, 0.5, 0.583, 0.666, 0.75, 0.833, 0.916, 0.999, 1]; - const grd = ctx.createLinearGradient(0, 0, 100, 0); - grd.addColorStop(values[0], "rgb(56,168,0)"); //black - grd.addColorStop(values[1], "rgb(77,179,0)"); //blue - grd.addColorStop(values[2], "rgb(102,191,0)"); //pink - grd.addColorStop(values[3], "rgb(126,204,0)"); //red - grd.addColorStop(values[4], "rgb(155,217,0)"); //orange - grd.addColorStop(values[5], "rgb(187,230,0)"); //yellow - grd.addColorStop(values[6], "rgb(222,242,0)"); //white - grd.addColorStop(values[7], "rgb(255,255,0)"); //white - grd.addColorStop(values[8], "rgb(255,221,0)"); //white - grd.addColorStop(values[9], "rgb(255,183,0)"); //white - grd.addColorStop(values[10], "rgb(255,145,0)"); //white - grd.addColorStop(values[11], "rgb(255,111,0)"); //white - grd.addColorStop(values[12], "rgb(255,72,0)"); //white - grd.addColorStop(values[13], "rgb(255,38,0)"); //white + setImageLayerChange() { + if (window.esriLayer) { + Viewer.imageryLayers.raiseToTop(window.esriLayer); - ctx.fillStyle = grd; - ctx.fillRect(0, 0, 100, 1); - - return ramp; + } + if (this.imageryProvider) { + Viewer.imageryLayers.raiseToTop(this.imageryProvider); + } }, - //绛夐珮绾� setcontour() { + // if (this.imageryProvider) { + // Viewer.imageryLayers.remove(this.imageryProvider); + // this.imageryProvider = null; + // return + // } + // var that = this; + // var imageryProvider = new Cesium.UrlTemplateImageryProvider({ + // url: 'http://192.168.20.83:80/Moon/LFData/2d/tiles/contour_500/{mz}/{my}/{mx}.png', + // tilingScheme: new Cesium.GeographicTilingScheme(), + // customTags: { + // mz: function (imageryProvider, x, y, level) { + // return 'L' + that.zeroFill(level + 1, 2, 10); // 娉ㄦ剰瑙傛祴锛屽眰绾у姞1浜� + // }, + // mx: function (imageryProvider, x, y, level) { + // return 'C' + that.zeroFill(x, 8, 16); + // }, + // my: function (imageryProvider, x, y, level) { + // return 'R' + that.zeroFill(y, 8, 16); + // } + // } + // }); + // this.imageryProvider = Viewer.imageryLayers.addImageryProvider(imageryProvider); var globe = window.Viewer.scene.globe; if (window.material) { window.material = null; - globe.material = null - return + globe.material = null; + + store.state.slopeQueyFlag = false; + store.state.showSlopeQuey = false; + + return; } - var contourColor = new SmartEarth.Cesium.Color(117 / 255, 71 / 255, 18 / 255, 255 / 255); + var contourColor = new SmartEarth.Cesium.Color( + 117 / 255, + 71 / 255, + 18 / 255, + 255 / 255 + ); var contourUniforms = {}; - window.material = Cesium.Material.fromType('ElevationContour'); + window.material = Cesium.Material.fromType("ElevationContour"); contourUniforms = material.uniforms; contourUniforms.width = 1.0; contourUniforms.spacing = 100.0; @@ -161,46 +291,163 @@ globe.material = window.material; }, + + zeroFill(num, len, radix) { + var str = num.toString(radix || 10) + while (str.length < len) { + str = '0' + str + } + + return str; + }, + //绾挎煡璇� + spatialLineQuery() { + var that = this; + sgworld.Creator.createSimpleGraphic('polyline', {}, (entity) => { + var res = entity.polyline.positions.getValue() + var std = [] + for (var i in res) { + var line_data = this.setCartesianToEightFour(res[i]) + std.push([line_data.lng, line_data.lat]) + } + sgworld.Creator.SimpleGraphic.clear(); + this.setShowSpatialShp(std, 'polyline') + + + var line = turf.lineString(std, { name: "polyline" }) + var restVal = turf.buffer(line, this.bufferSize, { units: "meters" }) + that.setSpatialQuery(restVal) + }); + }, + + spatialPointQuery() { + var that = this; + sgworld.Creator.createSimpleGraphic('point', {}, (entity) => { + var res = entity.position.getValue(); + var val = that.setCartesianToEightFour(res) + sgworld.Creator.SimpleGraphic.clear(); + that.setShowSpatialShp(val, 'Point') + var options = { + steps: 10, + units: "meters", + properties: { foo: "bar" }, + } + var circle = turf.circle([val.lng, val.lat], this.bufferSize, options) + that.setSpatialQuery(circle) + }); + }, + setShowSpatialShp(res, type) { + var position = []; + + var name = '绌洪棿鏌ヨ_鏍囩粯' + switch (type) { + case 'polyline': + for (var i in res) { + position.push(res[i][0], res[i][1]) + } + window.Viewer.entities.add({ + name: name, + polyline: { + positions: Cesium.Cartesian3.fromDegreesArray(position), + width: 3.0, + material: new Cesium.PolylineOutlineMaterialProperty({ + color: new Cesium.Color.fromCssColorString('#A6D8AE').withAlpha(0.5), + outlineWidth: 1, + outlineColor: new Cesium.Color.fromCssColorString('#A6D8AE'), + }), + clampToGround: true, + + }, + }) + break; + case 'Point': + window.Viewer.entities.add({ + name: name, + position: Cesium.Cartesian3.fromDegrees(res.lng, res.lat), + point: { + color: new Cesium.Color.fromCssColorString('#A6D8AE').withAlpha(0.5), + pixelSize: 20, + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND + } + }); + break; + case 'Polygon': + window.Viewer.entities.add({ + name: name, + polygon: { + hierarchy: { positions: Cesium.Cartesian3.fromDegreesArray(res) }, + outline: true, + outlineWidth: 100, + arcType: Cesium.ArcType.RHUMB, + material: new Cesium.Color.fromCssColorString('#A6D8AE').withAlpha(0.5), + outline: true, // height is required for outline to display + outlineColor: new Cesium.Color.fromCssColorString('#A6D8AE') + } + }); + break; + } + + }, + + setCartesianToEightFour(res) { + var std = {} + let ellipsoid = Viewer.scene.globe.ellipsoid + let cartographic = ellipsoid.cartesianToCartographic(res) + std.lat = Cesium.Math.toDegrees(cartographic.latitude) + std.lng = Cesium.Math.toDegrees(cartographic.longitude) + std.alt = cartographic.height + return std + }, //绌洪棿鏌ヨ spatialQuery() { + sgworld.Creator.createSimpleGraphic( + "rectangle", + { showSize: false }, + (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 + ); // 鏍规嵁寮у害鑾峰彇鍒扮含搴� - sgworld.Creator.createSimpleGraphic('rectangle', { showSize: false }, (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 - ); // 鏍规嵁寮у害鑾峰彇鍒扮含搴� - sgworld.Creator.SimpleGraphic.clear(); + var arr = [west, north, east, north, east, south, west, south, west, north]; + this.setShowSpatialShp(arr, 'Polygon') - var polygon = turf.polygon([ - [ - [east, north], - [west, north], - [west, south], - [east, south], - [east, north], - ], - ]); - var wkt = WKT.convert(polygon.geometry) + sgworld.Creator.SimpleGraphic.clear(); - window.functionForJs({ - type: 'spatialQuery', - value: this.encr(wkt) - }) + var polygon = turf.polygon([ + [ + [east, north], + [west, north], + [west, south], + [east, south], + [east, north], + ], + ]); + this.setSpatialQuery(polygon) + } + ); + }, + setSpatialQuery(res) { + var wkt = WKT.convert(res.geometry); + + window.functionForJs({ + type: "spatialQuery", + value: this.encr(wkt), }); }, //鍔犲瘑 encr(word) { return CryptoJS.AES.encrypt( CryptoJS.enc.Utf8.parse(word), - CryptoJS.enc.Utf8.parse(base64Decode('QSNzX2xGX3NFcnZlX2sueQ==')), + CryptoJS.enc.Utf8.parse(base64Decode("QSNzX2xGX3NFcnZlX2sueQ==")), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 } ).toString(); }, @@ -209,7 +456,7 @@ return CryptoJS.enc.Utf8.stringify( CryptoJS.AES.decrypt( word, - CryptoJS.enc.Utf8.parse(base64Decode('QSNzX2xGX3NFcnZlX2sueQ==')), + CryptoJS.enc.Utf8.parse(base64Decode("QSNzX2xGX3NFcnZlX2sueQ==")), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 } ) ).toString(); @@ -217,17 +464,18 @@ //蹇収 snapshot() { let canvas = window.Viewer.scene.canvas; - let image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); + let image = canvas + .toDataURL("image/png") + .replace("image/png", "image/octet-stream"); let link = document.createElement("a"); let blob = this.dataURLtoBlob(image); let objurl = URL.createObjectURL(blob); link.download = "scene.png"; link.href = objurl; link.click(); - }, dataURLtoBlob(dataurl) { - let arr = dataurl.split(','), + let arr = dataurl.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, @@ -236,7 +484,6 @@ u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); - }, leftTools(res) { this.clearLeftTools(res); @@ -246,29 +493,46 @@ } this.oldLeftMenuId = res.id; + + switch (res.id) { case "l1": + store.state.isShowMap = true; break; case "l2": + store.state.isShowMap = true; break; case "l3": //鍦ㄧ嚎鍒跺浘 - this.setThematicMap(); + store.state.isShowMap = true; + setTimeout(() => { + this.setThematicMap(); + }, 200); + break; case "l4": + store.state.isShowMap = true; break; case "l5": + store.state.isShowMap = false break; case "l6": + store.state.isShowMap = true; break; } }, thematicTools(res) { switch (res.id) { + case "t1": + store.state.setLayerManager = !store.state.setLayerManager; + break; case "t2": this.createSimpleGraphic("rectangle", "square"); break; case "t3": this.delRectangle(); + break; + case "t4": + store.state.setExportList = !store.state.setExportList break; } }, @@ -280,6 +544,7 @@ }, // 鐭╁舰姝f柟褰� createRectangle(entity) { + sgworld.Creator.SimpleGraphic.clear(); this.delRectangle(); var west = Cesium.Math.toDegrees( entity.rectangle._coordinates.getValue().west @@ -299,65 +564,64 @@ var east1 = ss[2]; var north1 = ss[3]; var south1 = ss[1]; + this.exportSquare = ss; var geometry = Cesium.Rectangle.fromDegrees(west1, south1, east1, north1); - - // var e = Viewer.entities.add({ - // name: "姝f柟", - // 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, + Viewer.camera.setView({ + destination: Cesium.Rectangle.fromDegrees(west, south, east, north), }); - 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); - - window.functionForJs({ - type: 'exportMap', - value: true - }) + setTimeout(() => { + window.functionForJs({ + type: "exportMap", + value: true, + }); + }, 1000); }, // 鍒涘缓鍥惧舰 createSimpleGraphic(type, scene) { - + var that = this; sgworld.Creator.createSimpleGraphic(type, {}, (entity) => { + if (scene === "square") { this.createRectangle(entity); } + if (!scene) { + temporaryTool.setInsertEntityObj(type, entity) + } }); }, + + colorRgbToHex(str) { + + let reg = /^(rgb|RGB)/; + if (!reg.test(str)) { return; } + var rgb = str.slice(4, str.length - 1).split(",") + // 灏哛GB鑹插彿鎷嗗垎涓虹孩銆佺豢銆佽摑涓変釜閫氶亾鐨勫�� + var r = parseInt(rgb[0]); + var g = parseInt(rgb[1]); + var b = parseInt(rgb[2]); + + + return "#" + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0'); + + + }, + //鍦ㄧ嚎鍒跺浘 setThematicMap() { + earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE2D; // var handle = new SmartEarth.Cesium.ScreenSpaceEventHandler( // earthCtrl.viewer.scene.canvas // ); + }, //鍧愭爣瀹氫綅 Coordposition() { window.functionForJs({ - type: 'coordLocation', - value: true - }) + type: "coordLocation", + value: true, + }); }, //褰卞儚瀵规瘮 CurtainContrast() { @@ -366,53 +630,71 @@ window.DoubleScreen = null; const compass = document.getElementsByClassName("bottom_btn")[0]; compass.style.right = "70px"; - return + store.state.doubleMap = false; + store.state.doubleMenu = false; + return; } - window.DoubleScreen = new SmartEarth.DoubleScreen(window.sgworld, {}, SmartEarth); - DoubleScreen.right._Viewer.imageryLayers.removeAll() - var terrain = new Cesium.CesiumTerrainProvider({ - url: config.moonTerrain, - tilingScheme: new Cesium.GeographicTilingScheme({ - ellipsoid: Cesium.Ellipsoid.MOON, - }), - - }); - DoubleScreen.right._Viewer.terrainProvider = terrain; - rightServer.AddWmtesLayer(config.moonWmts) - + window.DoubleScreen = new SmartEarth.DoubleScreen( + window.sgworld, + {}, + SmartEarth + ); + window.rightViewer = DoubleScreen.right._Viewer; + window.rightViewer.imageryLayers.removeAll(); + window.rightViewer = DoubleScreen.right._Viewer; + window.rightViewer.animation.container.style.visibility = "hidden"; + // window.rightViewer.timeline.container.style.visibility = "hidden"; + //澶ф皵灞� + window.rightViewer.scene.globe.showGroundAtmosphere = false; + window.rightViewer.scene.skyAtmosphere.show = false; const compass = document.getElementsByClassName("bottom_btn")[0]; compass.style.right = "calc(50% + 70px)"; - - + compass.style.positions = "absolute"; + store.state.doubleMap = true; + setTimeout(() => { + window.functionGetLayer({ + type: "getlayer", + value: true, + }); + }, 100); }, //鍦熸柟閲忚绠� Volumetric() { - const Volumetric = earthCtrl.analysis.createVolumetricMeasure({}); - Volumetric.startDrawing(); + if (window.Volumetric) { + window.Volumetric.deleteObject(); + window.Volumetric = null; + } + Viewer.scene.globe.depthTestAgainstTerrain = true + Viewer.scene.pickTranslucentDepth = true + window.Volumetric = earthCtrl.analysis.createVolumetricMeasure({}); + window.Volumetric.startDrawing(); }, //鍨傜洿楂樺害 verticalHeight() { - - sgworld.Analysis.verticalHeight(this.colorAll, () => { - }); + sgworld.Analysis.verticalHeight(this.colorAll, () => { }); }, //楂樼▼娴嬮噺 heightMeasure() { - earthCtrl.Analysis.altitude(this.colorAll, () => { }); }, - //骞抽潰闈㈢Н + //琛ㄩ潰闈㈢Н planeDistance() { // earthCtrl.analysis.getPlaneArea(function (e) { }); + // var colorAll = this.colorAll + // sgworld.Analysis.surfaceArea({ + // colorAll, + // tin: false, // 鏄惁鏄剧ずtin涓夎缃� + // onlyTerrain: false // 鏄惁鍙祴閲忕簿缁嗗湴褰� + // }, () => { - sgworld.Analysis.planeArea(this.colorAll, () => { + // }); + earthCtrl.analysis.getSurfaceArea3d(function (e) { + console.info(e); }); - }, //琛ㄩ潰璺濈 surfaceDistance() { - sgworld.Analysis.horizontalDistance(this.colorAll, () => { - }); + sgworld.Analysis.horizontalDistance(this.colorAll, () => { }); }, //鐐规极娓� pointRoam() { @@ -420,10 +702,13 @@ }, //绾挎极娓� lineRoam() { + Viewer.scene.globe.depthTestAgainstTerrain = true; + // 缁樺埗璺嚎骞惰幏鍙栬矾寰勫姩鐢绘暟鎹� earthCtrl.Command.execute(2, 3, "", (data) => { + data.showPoint = false; data.showLine = true; - data.mode = 1; + data.mode = 0; // 寮圭獥鏁版嵁 window.PathAnimationData = { flyData: data, @@ -441,45 +726,41 @@ }, }); }); + }, //娓呴櫎鎸夐挳 clearALL(id) { - - this.clearTopTools() + this.clearTopTools(); // id.value.forEach((e) => { // }); }, + setCloseEsriLayer() { + if (window.esriLayer) { + Viewer.imageryLayers.remove(window.esriLayer); + window.esriLayer = null + this.legendBox = null; + store.state.showlegendLayer = false; + } + }, //娓呴櫎鏂规硶 clearTopTools(id) { - // if (id) { - // switch (id) { - // case "a2": - // break; - // case "a3": - // break; - // case "b2"://璺濈娴嬮噺 - // case "b3"://闈㈢Н娴嬮噺 - // case "b4"://楂樼▼娴嬮噺 - // case "b5"://楂樺害娴嬮噺 - - // break; - // case "c2": //鐐� - // case "c3": //鏂囧瓧 - // case "c4": //绾� - // case "c5": //鐭╁舰 - // case "c6": //澶氳竟褰� - - // break; - // case "d5": - - // break; - // case 'f1': - - // break; - // } + store.state.doubleMap = false; + store.state.doubleMenu = false; + this.setCloseEsriLayer(); + if (earthCtrl.shadows) { + Viewer.animation.container.style.visibility = "hidden"; + Viewer.timeline.container.style.visibility = "hidden"; + Viewer.clock.shouldAnimate = false; + Viewer.scene.globe.enableLighting = false; + earthCtrl.shadows = false; + return + } + if (window.Volumetric) { + window.Volumetric.deleteObject(); + window.Volumetric = null; + } if (this.localPoint) { - this.localPoint.deleteObject(); this.localPoint = null; } @@ -488,7 +769,12 @@ window.material = null; globe.material = null; Viewer.scene.globe.enableLighting = false; - return + store.state.slopeQueyFlag = false; + store.state.showSlopeQuey = false; + } + if (this.imageryProvider) { + Viewer.imageryLayers.remove(this.imageryProvider) + this.imageryProvider = null; } if (window.DoubleScreen) { window.DoubleScreen && window.DoubleScreen.destroy(); @@ -496,14 +782,135 @@ const compass = document.getElementsByClassName("bottom_btn")[0]; compass.style.right = "70px"; } - sgworld.Analysis.clearMeasure() + sgworld.Analysis.clearMeasure(); sgworld.Creator.SimpleGraphic.clear(); - this.toolMenu.removeFromMap(); + // this.toolMenu.removeFromMap(); sgworld.Creator.SimpleGraphic.clear(); // this.toolFlag = null; - this.toolMenu = null; + // this.toolMenu = null; // } + earthCtrl.analysis.deleteObject(); }, clearLeftTools(res) { }, + //绌洪棿鏌ヨ灞炴�у畾浣� + spaceLocation(res) { + var name = '绌洪棿鏌ヨ'; + this.setClearLocation(name); + switch (res.type) { + case 'MultiPolygon': + for (var i in res.coordinates) { + this.setLocationPolygon(res.coordinates[i], name) + } + break; + case 'MultiLineString': + for (var i in res.coordinates) { + this.setLocationLine(res.coordinates[i], name) + } + break; + case 'Point': + this.setLocationPoint(res.coordinates, name) + break; + } + }, + //娓呯┖涔嬪墠缁樺埗鍥惧舰 + setClearLocation(res) { + for (var i = 0; i < window.Viewer.entities._entities._array.length; i++) { + if (window.Viewer.entities._entities._array[i].name == res) { + window.Viewer.entities.remove(window.Viewer.entities._entities._array[i]) + i = i - 1; + } + } + }, + setLocationPolygon(res, name) { + var position = []; + var geom = res[0] + for (var i in geom) { + position.push(geom[i][0], geom[i][1]) + } + var locationPolygonEntity = window.Viewer.entities.add({ + name: name, + polygon: { + hierarchy: { positions: Cesium.Cartesian3.fromDegreesArray(position) }, + outline: true, + outlineWidth: 100, + arcType: Cesium.ArcType.RHUMB, + material: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.5), + outline: true, // height is required for outline to display + outlineColor: Cesium.Color.DODGERBLUE, + } + + }); + window.Viewer.flyTo(locationPolygonEntity, { + offset: { + heading: Cesium.Math.toRadians(0.0), + pitch: Cesium.Math.toRadians(-90), + range: 40 + } + } + ); + }, + setLocationPoint(res, name) { + const position = window.Viewer.entities.add({ + name: name, + position: Cesium.Cartesian3.fromDegrees(res[0], res[1]), + billboard: { + image: config.StaticFileBaseUrl + '/Workers/image/location.png', + // 璁剧疆璐村湴 + heightReference: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.5), + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + scale: 0.3, + }, + }); + + window.Viewer.flyTo(position, { + offset: { + heading: Cesium.Math.toRadians(0.0), + pitch: Cesium.Math.toRadians(-45), + range: 40000 + } + }); + }, + setViewerFlyTo(entity) { + + window.Viewer.flyTo(entity, { + offset: { + heading: Cesium.Math.toRadians(0.0), + pitch: Cesium.Math.toRadians(-45), + range: 40000 + } + }); + }, + + + setLocationLine(res, name) { + var position = []; + + for (var i in res) { + position.push(res[i][0], res[i][1]) + } + var polyline = window.Viewer.entities.add({ + name: name, + polyline: { + positions: Cesium.Cartesian3.fromDegreesArray(position), + width: 10.0, + material: new Cesium.PolylineOutlineMaterialProperty({ + color: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.5), + outlineWidth: 1, + outlineColor: Cesium.Color.CORNFLOWERBLUE, + }), + clampToGround: true, + + }, + }) + window.Viewer.flyTo(polyline, { + offset: { + heading: Cesium.Math.toRadians(0.0), + pitch: Cesium.Math.toRadians(-90), + range: 0 + } + } + ); + } + }; export default menuTool; -- Gitblit v1.9.3