From f5763f787d5cc5aa0b7d248e0f494c4232f1e3f3 Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期一, 27 十一月 2023 16:31:21 +0800 Subject: [PATCH] 版本更新 --- src/assets/js/Map/index.js | 312 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 193 insertions(+), 119 deletions(-) diff --git a/src/assets/js/Map/index.js b/src/assets/js/Map/index.js index 2addac9..91803d7 100644 --- a/src/assets/js/Map/index.js +++ b/src/assets/js/Map/index.js @@ -1,135 +1,209 @@ //閰嶇疆鏂囦欢鍦板潃 -import config from "./config"; +// import config from "../../../../public/config/config"; //鏈嶅姟鍔犺浇閰嶇疆鏂囦欢 +import { Store } from "vuex"; import server from "./server"; +import store from "@/store"; const InitMap = { - sgworld: null, - Viewer: null, - //鍦板浘鍒濆鍖� - init3DMap() { - //璁剧疆鏈堢悆鍧愭爣绯� - Cesium.Ellipsoid.WGS84 = new Cesium.Ellipsoid( - 1737400.0, - 1737400.0, - 1737400.0 - ); - //椤甸潰鍒濆鍖� - this.sgworld = new SmartEarth.SGWorld("cesiumContainer", { - url: SmartEarthRootUrl + config.imgUrl, - licenseServer: config.licenseServer, - infoBox: false, - }); - this.Viewer = this.sgworld._Viewer; - window.sgworld = this.sgworld; - window.Viewer = this.Viewer; - //鏄剧ずfps - sgworld._Viewer.scene.debugShowFramesPerSecond = false; - //娣诲姞鏈堢悆鍒濆鍖栧垏鐗囨湇鍔� - server.AddTmsLayer(config.moonTms); - //娣诲姞榧犳爣宸﹀嚮浜嬩欢 - this.addMouseLeftClickEvents(); - this.addMouseMouseMoveEvents(); - }, - //榧犳爣宸﹂敭鐐瑰嚮浜嬩欢娣诲姞 - addMouseLeftClickEvents() { - if (window.handleLeftClick) { - window.handleLeftClick.removeInputAction( - Cesium.ScreenSpaceEventType.LEFT_CLICK - ); //绉婚櫎浜嬩欢 - window.handleLeftClick = null; + earthCtrl: null, + Viewer: null, + graticules: null, + //鍦板浘鍒濆鍖� + init3DMap() { + SmartEarth.Cesium.ExternalParameter.eliminate = false; + SmartEarth.Cesium.ExternalParameter.changeApproximateTerrainHeights = true; + SmartEarth.Cesium.ExternalParameter.maxTerrainHeight = 2000000; + SmartEarth.Cesium.ExternalParameter.minTerrainHeight = -2000000; + SmartEarth.Cesium.ShadowMap.MAXIMUM_DISTANCE = 20000000000; + SmartEarth.Cesium.ExternalParameter.ellipsoidCoordinates = 'MOON2000' + window.Cesium = SmartEarth.Cesium; + SmartEarth.Cesium.Ellipsoid.WGS84 = new SmartEarth.Cesium.Ellipsoid( + 1737400.0, + 1737400.0, + 1737400.0 + ); + + + //椤甸潰鍒濆鍖� + this.earthCtrl = new SmartEarth.EarthCtrl("cesiumContainer", { + StaticFileBaseUrl: config.StaticFileBaseUrl, + ellipsoidCoordinates: 'MOON2000', + timeline: true, + shadowBackCul1: false + }); + this.earthCtrl.Viewer.scene.debugShowFramesPerSecond = true + this.earthCtrl.coreMap.scene.screenSpaceCameraController.enableCollisionDetection = true; + this.earthCtrl.Viewer.scene.globe.terrainExaggeration = 1.00001 + // this.earthCtrl.shadowMap.maximumDistance = 10000.0; + window.earthCtrl = this.earthCtrl; + window.Viewer = this.earthCtrl._Viewer; + Viewer.scene.skyAtmosphere.show = false; + window.Cesium = SmartEarth.Cesium; + window.sgworld = earthCtrl; + sgworld.Creator.SimpleGraphic.edit(true, { editProp: false }); + + + // 鏈�灏忕缉鏀鹃珮搴︼紙绫筹級 + // Viewer.scene.screenSpaceCameraController.minimumZoomDistance =10000; + // 鏈�澶х缉鏀鹃珮搴︼紙绫筹級 + // Viewer.scene.screenSpaceCameraController.maximumZoomDistance = 5000000; + + //======================= + //闃村奖鍒嗘瀽 + Viewer.scene.globe.lightingFadeOutDistance = 5.8e+7; + Viewer.scene.globe.enableLighting = false; + earthCtrl.shadows = false; + //璁剧疆鐞冧綋棰滆壊 + window.Viewer.scene.globe.baseColor = new Cesium.Color.fromCssColorString('#A9A9A9'); + //娓呴櫎鎵�鏈夐粯璁ゅ浘灞� + window.Viewer.imageryLayers.removeAll(); + window.setLayer(); + + // Viewer.scene.globe.depthTestAgainstTerrain = true; + Viewer.scene.globe.depthTestAgainstTerrain = false; // 寮�鍚繁搴︽祴璇� + Viewer.animation.container.style.visibility = "hidden"; + Viewer.timeline.container.style.visibility = "hidden"; + //======================= + //澶ф皵灞� + Viewer.scene.globe.showGroundAtmosphere = false; + sgworld._Viewer.scene.debugShowFramesPerSecond = false; + sgworld.Navigate.Stop(); //鍙栨秷椋炶鐘舵�� + sgworld.Navigate.setPosition(-1093596.38, 5729026.12, 4136590.41); + this.addMouseLeftClickEvents(); + this.addMouseLeftDownEvents(); + }, + addMouseLeftDownEvents() { + if (window.handleLeftClick) { + window.handleLeftClick.removeInputAction( + Cesium.ScreenSpaceEventType.LEFT_CLICK + ); //绉婚櫎浜嬩欢 + window.handleLeftClick = null; + } + const pickGlobeSlope = new SmartEarth.Cesium.PickGlobeSlope(earthCtrl.Viewer) + window.handleLeftClick = new Cesium.ScreenSpaceEventHandler( + window.Viewer.scene.canvas + ); + var that = this; + window.handleLeftClick.setInputAction(function (event) { + const angle = pickGlobeSlope.pickSlope(event.position) + if (store.state.slopeQueyFlag) { + if (!store.state.showSlopeQuey) { + store.state.showSlopeQuey = true; } - window.handleLeftClick = new Cesium.ScreenSpaceEventHandler( - window.Viewer.scene.canvas - ); - window.handleLeftClick.setInputAction(function (event) { - let cartesian = window.Viewer.camera.pickEllipsoid(event.position); - if (cartesian) { - let cartographic = Cesium.Cartographic.fromCartesian(cartesian); - let lng = Cesium.Math.toDegrees(cartographic.longitude); // 缁忓害 - let lat = Cesium.Math.toDegrees(cartographic.latitude); // 绾害 - let alt = cartographic.height; // 楂樺害锛屾き鐞冮潰height姘歌繙绛変簬0 - let coordinate = { - longitude: Number(lng.toFixed(6)), - latitude: Number(lat.toFixed(6)), - altitude: Number(alt.toFixed(2)), + store.state.slopeQueyValue = angle.toFixed(6); - }; + } - } + }, Cesium.ScreenSpaceEventType.LEFT_CLICK); + }, - }, Cesium.ScreenSpaceEventType.LEFT_CLICK); - }, + //榧犳爣宸﹂敭鐐瑰嚮浜嬩欢娣诲姞 + addMouseLeftClickEvents() { + if (window.handleLeftDown) { + window.handleLeftDown.removeInputAction( + Cesium.ScreenSpaceEventType.LEFT_DOWN + ); //绉婚櫎浜嬩欢 + window.handleLeftDown = null; + } + window.handleLeftDown = new Cesium.ScreenSpaceEventHandler( + window.Viewer.scene.canvas + ); + var that = this; + window.handleLeftDown.setInputAction(function (event) { + let cartesian = window.Viewer.scene.pick(event.position); + if (Cesium.defined(cartesian)) { - addMouseMouseMoveEvents() { - if (window.handleMouseMove) { - window.handleMouseMove.removeInputAction( - Cesium.ScreenSpaceEventType.MOUSE_MOVE - ); //绉婚櫎浜嬩欢 - window.handleMouseMove = null; + if (cartesian.id.shpType && cartesian.id.shpType == 'temporaryLayer') { + + that.setEditTemporaryLayer(cartesian.id._id) } - window.handleMouseMove = new Cesium.ScreenSpaceEventHandler(window.Viewer.scene.canvas); - window.handleMouseMove.setInputAction(function (movement) { - let cartesian = window.Viewer.camera.pickEllipsoid( - movement.endPosition, - window.Viewer.scene.globe.ellipsoid - ); - if (cartesian) { - //灏嗙瑳鍗″皵鍧愭爣杞崲涓哄湴鐞嗗潗鏍� - var cartographic = - window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian); - //灏嗗姬搴﹁浆涓哄害鐨勫崄杩涘埗搴﹁〃绀� - var lng = Cesium.Math.toDegrees(cartographic.longitude); - var lat = Cesium.Math.toDegrees(cartographic.latitude); - //鑾峰彇鐩告満楂樺害 - var alt = Math.ceil(window.Viewer.camera.positionCartographic.height); - let coordinate = { - longitude: Number(lng.toFixed(6)), - latitude: Number(lat.toFixed(6)), - altitude: Number(alt.toFixed(2)), - type: 'MOUSE_MOVE' - }; - window.addMouseEvents(coordinate) - } - }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); - }, + } + }, Cesium.ScreenSpaceEventType.LEFT_DOWN); + }, + setEditTemporaryLayer(res) { + // store.state.editTemporaryId = res; + // console.log(store.state.editTemporaryId) - //CGCS2000杞湀鐞冨潗鏍�---寰呴獙璇� - Cjcs2000ToMoon() { - // 瀹氫箟寰呰浆鎹㈢殑缁忕含搴﹀潗鏍囧拰楂樺害 - const longitude = 110.5; - const latitude = 34.5; - const height = 0; + if (store.state.editTemporaryId && store.state.editTemporaryId == res) { - // 瀹氫箟CGCS2000鍧愭爣绯� - const cgcs2000 = new Cesium.Ellipsoid( - 6378137.0, - 6378137.0, - 6356752.3142451793 - ); + store.state.setEditTemporaryShow = true; + } + }, + addMouseMouseMoveEvents() { + if (window.handleMouseMove) { + window.handleMouseMove.removeInputAction( + Cesium.ScreenSpaceEventType.MOUSE_MOVE + ); //绉婚櫎浜嬩欢 + window.handleMouseMove = null; + } + window.handleMouseMove = new Cesium.ScreenSpaceEventHandler( + window.Viewer.scene.canvas + ); + window.handleMouseMove.setInputAction(function (movement) { + let cartesian = window.Viewer.camera.pickEllipsoid( + movement.endPosition, + window.Viewer.scene.globe.ellipsoid + ); + if (cartesian) { + //灏嗙瑳鍗″皵鍧愭爣杞崲涓哄湴鐞嗗潗鏍� + var cartographic = + window.Viewer.scene.globe.ellipsoid.cartesianToCartographic( + cartesian + ); + //灏嗗姬搴﹁浆涓哄害鐨勫崄杩涘埗搴﹁〃绀� + var lng = Cesium.Math.toDegrees(cartographic.longitude); + var lat = Cesium.Math.toDegrees(cartographic.latitude); + //鑾峰彇鐩告満楂樺害 + var alt = Math.ceil(window.Viewer.camera.positionCartographic.height); - // 瀹氫箟Moon2000鍧愭爣绯� - const moon2000 = new Cesium.Ellipsoid(1737400.0, 1737400.0, 1737400.0); + let coordinate = { + longitude: Number(lng.toFixed(6)), + latitude: Number(lat.toFixed(6)), + altitude: Number(alt.toFixed(2)), + type: "MOUSE_MOVE", + }; + window.addMouseEvents(coordinate); + } + }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); + }, - // 灏嗙粡绾害鍧愭爣杞崲涓虹瑳鍗″皵鍧愭爣绯� - const cartesian3 = Cesium.Cartesian3.fromDegrees( - longitude, - latitude, - height, - cgcs2000 - ); - // 灏嗙瑳鍗″皵鍧愭爣绯昏浆鎹负Moon2000鍧愭爣绯� - const moonCartesian3 = Cesium.Transforms.eastNorthUpToFixedFrame( - cartesian3, - cgcs2000, - moon2000 - ); - // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害 - console.log(moonCartesian3); - // 灏哅oon2000鍧愭爣绯荤殑绗涘崱灏斿潗鏍囪浆鎹负缁忕含搴﹀潗鏍� - const moonPosition = Cesium.Cartographic.fromCartesian(moonCartesian3); - // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害 - console.log(moonPosition); - }, + //CGCS2000杞湀鐞冨潗鏍�---寰呴獙璇� + Cjcs2000ToMoon() { + // 瀹氫箟寰呰浆鎹㈢殑缁忕含搴﹀潗鏍囧拰楂樺害 + const longitude = 110.5; + const latitude = 34.5; + const height = 0; + + // 瀹氫箟CGCS2000鍧愭爣绯� + const cgcs2000 = new Cesium.Ellipsoid( + 6378137.0, + 6378137.0, + 6356752.3142451793 + ); + + // 瀹氫箟Moon2000鍧愭爣绯� + const moon2000 = new Cesium.Ellipsoid(1737400.0, 1737400.0, 1737400.0); + + // 灏嗙粡绾害鍧愭爣杞崲涓虹瑳鍗″皵鍧愭爣绯� + const cartesian3 = Cesium.Cartesian3.fromDegrees( + longitude, + latitude, + height, + cgcs2000 + ); + // 灏嗙瑳鍗″皵鍧愭爣绯昏浆鎹负Moon2000鍧愭爣绯� + const moonCartesian3 = Cesium.Transforms.eastNorthUpToFixedFrame( + cartesian3, + cgcs2000, + moon2000 + ); + // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害 + console.log(moonCartesian3); + // 灏哅oon2000鍧愭爣绯荤殑绗涘崱灏斿潗鏍囪浆鎹负缁忕含搴﹀潗鏍� + const moonPosition = Cesium.Cartographic.fromCartesian(moonCartesian3); + // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害 + console.log(moonPosition); + }, }; -export default InitMap; +export default InitMap; \ No newline at end of file -- Gitblit v1.9.3