| | |
| | | :class="{ active: dimension == '2D' }" |
| | | @click="zoomIn('2D')" |
| | | > |
| | | 3D |
| | | 3 维 |
| | | </div> |
| | | <div |
| | | class="m-l-inbut zoom-in m-l-inbut-3d" |
| | | :class="{ active: dimension == '2.5D' }" |
| | | @click="zoomIn('2.5D')" |
| | | > |
| | | 2.5 |
| | | 2.5维 |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | </script> |
| | | |
| | | <style scoped lang='scss'> |
| | | @property --color { |
| | | syntax: "<color>"; |
| | | inherits: false; |
| | | initial-value: 25%; |
| | | } |
| | | .m-left-control { |
| | | position: fixed; |
| | | left: 20px; |
| | |
| | | .m-l-inbut-2d { |
| | | position: relative; |
| | | top: 60px; |
| | | font-size: 16px; |
| | | font-size: 14px; |
| | | // &:hover { |
| | | // background-color: rgb(21, 136, 230); |
| | | // box-shadow: -2px -2px 3px rgb(3, 74, 136) inset; |
| | |
| | | }, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["iconHide"]), |
| | | ...mapGetters(["iconHide", "dimensionData"]), |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | } |
| | | }, |
| | | flyTo(item) { |
| | | let that = this; |
| | | let posi = this[item.layer].positions[0]; |
| | | // console.log(posi); |
| | | let lntLat = |
| | | that.dimensionData.pitch == -45 |
| | | ? [posi.lng + 0.00917, posi.lat - 0.0188, 2100] |
| | | : [posi.lng + 0.00917, posi.lat - 0.0038, 2400]; |
| | | this.$store.dispatch("mapFlyTo", { |
| | | //飞入 |
| | | lntLat: [posi.lng + 0.00917, posi.lat - 0.0188, 2100], |
| | | lntLat: lntLat, |
| | | // lntLat: [posi.lng + 0.01187, posi.lat - 0.0308, 4000], |
| | | // lntLat: [121.50492752204283, 31.21567802276832, 2530], |
| | | heading: 0, |
| | | pitch: -45, |
| | | roll: 0, |
| | | heading: that.dimensionData.heading, |
| | | pitch: that.dimensionData.pitch, |
| | | roll: that.dimensionData.roll, |
| | | noOpen: true, |
| | | }); |
| | | }, |
| | |
| | | bigPopup: { |
| | | width: 0, |
| | | height: 0, |
| | | // transition: "all 3s", |
| | | }, |
| | | // transition: "all 3s", |
| | | wallArr: [ |
| | | [116.41526036, 27.95352217, 100], |
| | | [116.41128018, 27.95789328, 100], |
| | | [116.40246486, 27.9639711, 100], |
| | | [116.39728537, 27.96779573, 100], |
| | | [116.39588026, 27.96862679, 100], |
| | | [116.38903705, 27.97029865, 100], |
| | | [116.38872398, 27.97051829, 100], |
| | | [116.38892229, 27.9709012, 100], |
| | | [116.38906721, 27.97190632, 100], |
| | | [116.38706808, 27.97195638, 100], |
| | | [116.38649076, 27.97114448, 100], |
| | | [116.3821407, 27.97312735, 100], |
| | | [116.37876213, 27.97582549, 100], |
| | | [116.3785131, 27.97664153, 100], |
| | | [116.37634915, 27.98039526, 100], |
| | | [116.3743922, 27.98131916, 100], |
| | | [116.36995935, 27.97936074, 100], |
| | | [116.37217247, 27.97498147, 100], |
| | | [116.35099819, 27.97539586, 100], |
| | | [116.35103749, 27.9808805, 100], |
| | | [116.3397246, 27.97987911, 100], |
| | | [116.33950071, 27.97372028, 100], |
| | | [116.32313266, 27.97004136, 100], |
| | | [116.32606743, 27.95863979, 100], |
| | | [116.34788837, 27.92538024, 100], |
| | | [116.3456631, 27.92338627, 100], |
| | | [116.3487449, 27.91718915, 100], |
| | | [116.35311999, 27.91804451, 100], |
| | | [116.35109257, 27.92284807, 100], |
| | | [116.35975153, 27.92900526, 100], |
| | | [116.35660704, 27.93816236, 100], |
| | | [116.39585177, 27.93945304, 100], |
| | | [116.41526036, 27.95352217, 100], |
| | | ], |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | }); |
| | | |
| | | // 地图点击事件 |
| | | viewer.on(DC.MouseEventType.CLICK, (e) => { |
| | | // console.log(e); |
| | | // 定制化窗体 |
| | | that.openPopupS( |
| | | e.position, |
| | | [e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat], |
| | | { |
| | | name: "地图点击", |
| | | address: [e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat], |
| | | introduce: [e.windowPosition.x, e.windowPosition.y], |
| | | from: "地图点击", |
| | | } |
| | | ); |
| | | }); |
| | | // viewer.on(DC.MouseEventType.CLICK, (e) => { |
| | | // // console.log(e); |
| | | // // 定制化窗体 |
| | | // that.openPopupS( |
| | | // e.position, |
| | | // [e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat], |
| | | // { |
| | | // name: "地图点击", |
| | | // address: [e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat], |
| | | // introduce: [e.windowPosition.x, e.windowPosition.y], |
| | | // from: "地图点击", |
| | | // } |
| | | // ); |
| | | // }); |
| | | |
| | | //白模型↓ |
| | | // const layer = new DC.TilesetLayer("layer"); |
| | |
| | | ); |
| | | tilesetLayer.addOverlay(tileset); |
| | | // tilesetLayer.show = false; |
| | | |
| | | let silhouetteBlue = |
| | | that.DC.Namespace.Cesium.PostProcessStageLibrary.createEdgeDetectionStage(); |
| | | silhouetteBlue.uniforms.color = that.DC.Namespace.Cesium.Color.fromBytes( |
| | | 9, |
| | | 162, |
| | | 40 |
| | | ); |
| | | silhouetteBlue.uniforms.length = 0.01; |
| | | silhouetteBlue.selected = []; |
| | | |
| | | viewer.scene.postProcessStages.add( |
| | | that.DC.Namespace.Cesium.PostProcessStageLibrary.createSilhouetteStage([ |
| | | silhouetteBlue, |
| | | ]) |
| | | ); |
| | | |
| | | var highlighted = { |
| | | feature: undefined, |
| | | originalColor: new that.DC.Namespace.Cesium.Color(), |
| | | }; |
| | | |
| | | var selected = { |
| | | feature: undefined, |
| | | originalColor: new that.DC.Namespace.Cesium.Color(), |
| | | }; |
| | | //点击事件 |
| | | tileset.on(DC.MouseEventType.CLICK, (e) => { |
| | | viewer.scene.globe.depthTestAgainstTerrain = false; |
| | | // console.log(e); |
| | | |
| | | viewer.flyToPosition( |
| | | new that.DC.Position(115.87186406, 28.74449337, 1800, 0, 45, 0) |
| | | ); |
| | | |
| | | // 定制化窗体 |
| | | that.openPopupS( |
| | | e.position, |
| | | [e.wgs84Position.lng, e.wgs84Position.lat], |
| | | { |
| | | name: e.layer._bid, |
| | | address: e.layer.type, |
| | | introduce: e.layer._id, |
| | | } |
| | | ); |
| | | }); |
| | | //移动事件 高亮 |
| | | tileset.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => { |
| | | silhouetteBlue.selected = []; |
| | | |
| | | if (that.DC.Namespace.Cesium.defined(highlighted.feature)) { |
| | | highlighted.feature.color = highlighted.originalColor; |
| | | highlighted.feature = undefined; |
| | | } |
| | | |
| | | if (e.feature !== selected.feature) { |
| | | silhouetteBlue.selected = [e.feature]; |
| | | |
| | | highlighted.feature = e.feature; |
| | | |
| | | that.DC.Namespace.Cesium.Color.clone( |
| | | e.feature.color, |
| | | highlighted.originalColor |
| | | ); |
| | | e.feature.color = that.DC.Namespace.Cesium.Color.fromBytes( |
| | | 155, |
| | | 255, |
| | | 175 |
| | | ); |
| | | } |
| | | }); |
| | | tilesetLayer["changesilhouetteBlue"] = () => { |
| | | silhouetteBlue.selected = []; |
| | | }; |
| | | tilesetLayer.show = false; |
| | | //精细模型↑ |
| | | |
| | | // 2.5D贴图↓ |
| | | var provider = |
| | | new that.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | url: "http://www.tdtfz.com/OneMapServer/rest/services/fzsw2019/MapServer/WMTS/tile/1.0.0/fzsw2019/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}", |
| | | layer: "fzsw2019", |
| | | style: "default", |
| | | tileMatrixSetID: "default028mm", |
| | | format: "image/jpgpng", |
| | | tilingScheme: new that.DC.Namespace.Cesium.GeographicTilingScheme(), |
| | | maximumLevel: 19, |
| | | tileMatrixLabels: [ |
| | | "0", |
| | | "1", |
| | | "2", |
| | | "3", |
| | | "4", |
| | | "5", |
| | | "6", |
| | | "7", |
| | | "8", |
| | | "9", |
| | | "10", |
| | | "11", |
| | | "12", |
| | | "13", |
| | | "14", |
| | | "15", |
| | | "16", |
| | | "17", |
| | | "18", |
| | | "19", |
| | | ], |
| | | }); |
| | | let usetowpointfive = () => { |
| | | var provider = |
| | | new that.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | url: "http://www.tdtfz.com/OneMapServer/rest/services/fzsw2019/MapServer/WMTS/tile/1.0.0/fzsw2019/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}", |
| | | layer: "fzsw2019", |
| | | style: "default", |
| | | tileMatrixSetID: "default028mm", |
| | | format: "image/jpgpng", |
| | | tilingScheme: new that.DC.Namespace.Cesium.GeographicTilingScheme(), |
| | | maximumLevel: 19, |
| | | tileMatrixLabels: [ |
| | | "0", |
| | | "1", |
| | | "2", |
| | | "3", |
| | | "4", |
| | | "5", |
| | | "6", |
| | | "7", |
| | | "8", |
| | | "9", |
| | | "10", |
| | | "11", |
| | | "12", |
| | | "13", |
| | | "14", |
| | | "15", |
| | | "16", |
| | | "17", |
| | | "18", |
| | | "19", |
| | | ], |
| | | }); |
| | | return viewer.imageryLayers.addImageryProvider(provider); |
| | | }; |
| | | |
| | | viewer.imageryLayers.addImageryProvider(provider); |
| | | const newLayer = usetowpointfive(); |
| | | // 2.5D贴图↑ |
| | | let startPoint; |
| | | if (false) { |
| | |
| | | // viewer.flyTo(tileset); |
| | | }, 2500); |
| | | } else { |
| | | startPoint = () => { |
| | | startPoint = (val) => { |
| | | // viewer.zoomToPosition( |
| | | // new DC.Position(115.86798885, 28.72502592, 2100, 0, -45) |
| | | // ); |
| | | viewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | 116.390060025, |
| | | 27.95649473, |
| | | 2000.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: that.DC.Namespace.Cesium.Math.toRadians( |
| | | that.dimensionData.heading |
| | | ), |
| | | // 视角 |
| | | pitch: that.DC.Namespace.Cesium.Math.toRadians( |
| | | that.dimensionData.pitch |
| | | ), |
| | | roll: that.dimensionData.roll, |
| | | }, |
| | | }); |
| | | let doit = (int) => { |
| | | if (val == 1) { |
| | | viewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | // 116.390060025, |
| | | // 27.95649473, |
| | | // 2000.0 |
| | | int[0], |
| | | int[1], |
| | | int[2] |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: that.DC.Namespace.Cesium.Math.toRadians( |
| | | that.dimensionData.heading |
| | | ), |
| | | // 视角 |
| | | pitch: that.DC.Namespace.Cesium.Math.toRadians( |
| | | that.dimensionData.pitch |
| | | ), |
| | | roll: that.dimensionData.roll, |
| | | }, |
| | | }); |
| | | } else { |
| | | that.$store.dispatch("mapFlyTo", { |
| | | lntLat: [+int[0] + 0.012, int[1], int[2]], |
| | | // 指向 |
| | | heading: that.dimensionData.heading, |
| | | // 视角 |
| | | pitch: that.dimensionData.pitch, |
| | | roll: that.dimensionData.roll, |
| | | noOpen: true, |
| | | }); |
| | | } |
| | | }; |
| | | that.dimension == "2.5D" |
| | | ? doit([116.390060025, 27.95649473, 2000.0]) |
| | | : doit([117.08513731, 31.64790556, 600.0]); |
| | | }; |
| | | startPoint(); |
| | | startPoint(1); |
| | | } |
| | | //传递默认位置 |
| | | that.$store.commit("MSET_MORENWEIZHI", startPoint); |
| | |
| | | //瀑布流↓ |
| | | const wallLayer = new that.DC.VectorLayer("wallLayer"); |
| | | viewer.addLayer(wallLayer); |
| | | var arr = [ |
| | | [115.87597219, 28.74628526, 100], |
| | | [115.87556558, 28.74415792, 100], |
| | | [115.87459782, 28.74197687, 100], |
| | | [115.87371834, 28.74219927, 100], |
| | | [115.87210924, 28.74182217, 100], |
| | | [115.86469971, 28.73630725, 100], |
| | | [115.86387107, 28.73620123, 100], |
| | | [115.86274498, 28.73616026, 100], |
| | | [115.86173699, 28.7424135, 100], |
| | | [115.86105468, 28.74643934, 100], |
| | | [115.8660924, 28.74642593, 100], |
| | | [115.87597219, 28.74628526, 100], |
| | | ]; |
| | | var arr = that.wallArr; |
| | | arr.forEach((item) => { |
| | | item = item.join(","); |
| | | }); |
| | |
| | | viewer.use(new that.DC.Measure()); |
| | | //瀑布流↑ |
| | | |
| | | // 传入store |
| | | that.$store.commit("MSET_MODEOLS", { |
| | | tilesetLayer: tilesetLayer, |
| | | tileset: tileset, |
| | | newLayer: newLayer, |
| | | wallLayer: wallLayer, |
| | | usetowpointfive: usetowpointfive, |
| | | }); |
| | | |
| | | //飞入起始点 |
| | | // that.$store.dispatch("mapFlyTo", { |
| | | // lntLat: [115.87186406, 28.74449337, 1200], |
| | |
| | | // }); |
| | | //地图渲染完成执行srore中MSET_CREADE |
| | | // that.$store.dispatch("MSET_CREADE"); |
| | | |
| | | // tileset.on(DC.MouseEventType.CLICK, (e) => { |
| | | // viewer.scene.globe.depthTestAgainstTerrain = false; |
| | | // // console.log(e); |
| | | |
| | | // viewer.flyToPosition( |
| | | // new that.DC.Position(115.87186406, 28.74449337, 1800, 0, 45, 0) |
| | | // ); |
| | | |
| | | // // 定制化窗体 |
| | | // that.openPopupS( |
| | | // e.position, |
| | | // [e.wgs84Position.lng, e.wgs84Position.lat], |
| | | // { |
| | | // name: e.layer._bid, |
| | | // address: e.layer.type, |
| | | // introduce: e.layer._id, |
| | | // } |
| | | // ); |
| | | // }); |
| | | |
| | | viewer.compass.enable = false; |
| | | viewer.zoomController.enable = true; |
| | |
| | | }, |
| | | perspectiveControl: '',//视角控制:高度、角度 ()=>{} |
| | | perspectiveControls: '',//视角控制:高度、角度 ()=>{} |
| | | |
| | | tilesetLayer: null,//3d模型 |
| | | tileset: null,//3d模型 |
| | | tilesetLayer: null,//2.5d模型 |
| | | usetowpointfive: null, |
| | | tilesetLayer: null,//瀑布流 |
| | | }, |
| | | mutations: { |
| | | MSET_VIEWER(state, viewer) { |
| | |
| | | if (data == "2D") { // 改数据为3d数据 |
| | | state.dimensionData = {// 维度镜头数据 |
| | | heading: 0, |
| | | pitch: -90, |
| | | pitch: -45, |
| | | roll: 0 |
| | | }; |
| | | // console.log(1321) |
| | | state.wallLayer.show = false; |
| | | state.mviewer.imageryLayers.remove(state.newLayer); |
| | | state.newLayer = null; |
| | | // state.silhouetteBlue.selected = [] |
| | | state.tilesetLayer.changesilhouetteBlue(); |
| | | // console.log(state.tileset) |
| | | state.tilesetLayer.show = true; |
| | | state.startPointFn(); |
| | | // state.mviewer.flyTo(state.tileset); |
| | | } else if (data == "2.5D") { |
| | | state.dimensionData = {// 维度镜头数据 |
| | | heading: 0, |
| | | pitch: -90, |
| | | roll: 0 |
| | | }; |
| | | state.tilesetLayer.show = false |
| | | |
| | | state.newLayer = state.usetowpointfive(); |
| | | |
| | | state.wallLayer.show = true |
| | | |
| | | state.startPointFn(); |
| | | // state.mviewer.camera.setView({ |
| | | // // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | // destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(116.36618337, 27.95911915, 1000.0), |
| | | // orientation: { |
| | | // // 指向 |
| | | // heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // // 视角 |
| | | // pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | // roll: 0.0 |
| | | // } |
| | | // }) |
| | | } |
| | | }, |
| | | //切换控制 |
| | |
| | | state.perspectiveControl = data; |
| | | state.perspectiveControls = !state.perspectiveControls; |
| | | }, |
| | | MSET_MODEOLS(state, data) { |
| | | state.tilesetLayer = data.tilesetLayer; |
| | | state.newLayer = data.newLayer; |
| | | state.wallLayer = data.wallLayer; |
| | | state.tileset = data.tileset; |
| | | state.usetowpointfive = data.usetowpointfive; |
| | | } |
| | | }, |
| | | actions: { |
| | | MSET_CREADE({ state, commit, dispatch }) { |
| | |
| | | dispatch("closeMobileWindowsDom"); |
| | | let clas, Flys; |
| | | const nowHeight = Math.ceil(state.mviewer.camera.positionCartographic.height); |
| | | console.log(data) |
| | | if (state.dimension == "2D") { |
| | | Flys = [ |
| | | +data.lntLat[0] + 0.01197, |
| | | +data.lntLat[1] - 0.0001, |
| | | nowHeight, |
| | | // +data.lntLat[1] - 0.0001, |
| | | +data.lntLat[1] - 0.0042, |
| | | 330, |
| | | ] |
| | | clas = [ |
| | | data.from == 'PopupOurOnce' ? +data.lntLat[0] : +data.lntLat[0], |
| | | data.from == 'PopupOurOnce' ? +data.lntLat[1] - 0.00108 : +data.lntLat[1], |
| | | data.from == 'PopupOurOnce' ? 0 : 0 |
| | | // data.from == 'PopupOurOnce' ? +data.lntLat[1] - 0.00108 : +data.lntLat[1], |
| | | data.from == 'PopupOurOnce' ? +data.lntLat[1] - 0.00108 : +data.lntLat[1] - 0.00048, |
| | | data.from == 'PopupOurOnce' ? 0 : 90.648862227 |
| | | ] |
| | | } else if (state.dimension == '2.5D') { |
| | | Flys = [ |
| | | +data.lntLat[0] + 0.01197, |
| | | +data.lntLat[1] - 0.0022, |
| | | 330 |
| | | +data.lntLat[1] - 0.0001, |
| | | // +data.lntLat[1] - 0.0022, |
| | | nowHeight |
| | | ] |
| | | clas = [ |
| | | data.from == 'PopupOurOnce' ? +data.lntLat[0] : +data.lntLat[0], |
| | | data.from == 'PopupOurOnce' ? +data.lntLat[1] - 0.00108 : +data.lntLat[1] - 0.00048, |
| | | data.from == 'PopupOurOnce' ? 0 : 90.648862227 |
| | | data.from == 'PopupOurOnce' ? +data.lntLat[1] - 0.00108 : +data.lntLat[1], |
| | | // data.from == 'PopupOurOnce' ? +data.lntLat[1] - 0.00108 : +data.lntLat[1] - 0.00048, |
| | | // data.from == 'PopupOurOnce' ? 0 : 90.648862227 |
| | | data.from == 'PopupOurOnce' ? 0 : 0 |
| | | ] |
| | | } |
| | | |
| | |
| | | // pitch: data.pitch, |
| | | roll: data.roll |
| | | }, |
| | | duration: 1.6, // 定位的时间间隔 |
| | | duration: 1.5, // 定位的时间间隔 |
| | | complete: () => { // 完成后的回调 |
| | | if (data.fn) { // 自定义回调 |
| | | setTimeout(() => { |