| | |
| | | <template> |
| | | <div class="dimension-cut"> |
| | | <!-- <el-button type="primary">{{zoomValue}}</el-button> --> |
| | | |
| | | <el-button |
| | | v-show="btnGroupShow" |
| | | size="mini" |
| | |
| | | @click="locationTC" |
| | | >热力图</el-button> |
| | | |
| | | <el-checkbox |
| | | v-show="btnGroupShow" |
| | | size="mini" |
| | | class="sat-qx" |
| | | v-model="qxChange" |
| | | label="倾斜数据" |
| | | @change="qxChangeEvent" |
| | | border |
| | | ></el-checkbox> |
| | | |
| | | <el-radio-group v-model="dimensionValue" size="medium" @change="dimensionChange"> |
| | | <el-radio-button label="三 维"></el-radio-button> |
| | | <el-radio-button label="真三维"></el-radio-button> |
| | |
| | | import axios from 'axios' |
| | | import { mapGetters } from 'vuex' |
| | | import { getDetail } from '@/api/pc/public/arc' |
| | | import baseLayerImgUrl from '@/assets/baseUrl' |
| | | |
| | | let baseLayer = [] |
| | | |
| | | let tilesetLayer = null |
| | | |
| | | let tileset = null |
| | | |
| | | let qxTilesetLayer = null |
| | | let qxTileset = null |
| | | |
| | | let silhouetteBlue = null |
| | | |
| | | let baseMapLayer = null |
| | | const baseMapLayer = null |
| | | |
| | | let DefaultAreaLayer = null |
| | | |
| | |
| | | let layerSATtwo = null |
| | | let tcLayer = null |
| | | |
| | | let yxLayer = null |
| | | let dxLayer = null |
| | | |
| | | let viewerHeight = 700 |
| | | let heightChange = 700 |
| | | |
| | | const mixVH = 150 |
| | | const maxVH = 700 |
| | | |
| | | const oneVH = 150 |
| | | const twoVH = 300 |
| | | const fourVH = 500 |
| | | const fiveVH = 700 |
| | | |
| | | const heightDifferenceValue = 100 |
| | | |
| | | // const wallLayer = null |
| | | |
| | | export default { |
| | | name: 'dimension', |
| | | data () { |
| | | return { |
| | | qxChange: false, |
| | | zoomValue: 0, |
| | | btnGroupShow: false, |
| | | dimensionValue: '三 维', |
| | | // 建筑2.5D地图 |
| | |
| | | [114.03954722, 27.62819644, 100], |
| | | [114.04006133, 27.628038, 100] |
| | | ], |
| | | mapCenter: [116.35381525, |
| | | 27.95839468, 400.0] |
| | | // mapCenter: [115.871863, 28.743861, 400.0] |
| | | mapCenter: [114.03928435, |
| | | 27.62997062, 700] |
| | | // mapCenter: [116.35559028, |
| | | // 27.96548051, 5000] |
| | | // mapCenter: [115.871863, 28.743861, 950.0] |
| | | } |
| | | }, |
| | | props: ['wheelFlag', 'startWheel', 'startSmallWheel'], |
| | | computed: { |
| | | ...mapGetters([ |
| | | 'viewerExist', |
| | |
| | | ) |
| | | ) |
| | | |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=9ae78c51a0a28f06444d541148496e36', |
| | | subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'], |
| | | format: 'image/jpeg', |
| | | show: true, |
| | | maximumLevel: 18 |
| | | }) |
| | | ) |
| | | |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | url: 'http://t{s}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=9ae78c51a0a28f06444d541148496e36', |
| | | subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'], |
| | | format: 'image/jpeg', |
| | | show: true, |
| | | maximumLevel: 18 |
| | | }) |
| | | ) |
| | | |
| | | // global.viewer.imageryLayers.addImageryProvider( |
| | | // new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | // url: ' http://t1.tianditu.gov.cn/vec_w/wmts?tk=9ae78c51a0a28f06444d541148496e36', |
| | | // url: ' http://t1.tianditu.gov.cn/vec_w/wmts?tk=e9533f5acb2ac470b07f406a4d24b4f0', |
| | | // type: 'wmts', |
| | | // layer: 'vec', |
| | | // style: 'default', |
| | |
| | | |
| | | // global.viewer.imageryLayers.addImageryProvider( |
| | | // new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | // url: ' http://t1.tianditu.gov.cn/cva_w/wmts?tk=9ae78c51a0a28f06444d541148496e36', |
| | | // url: ' http://t1.tianditu.gov.cn/cva_w/wmts?tk=e9533f5acb2ac470b07f406a4d24b4f0', |
| | | // type: 'wmts', |
| | | // layer: 'cva', |
| | | // style: 'default', |
| | |
| | | |
| | | videoLayer.addOverlay(cameraVideo) |
| | | |
| | | baseMapLayer = |
| | | global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | url: '/wp/{z}/{x}/{y}.png', |
| | | fileExtension: 'png' |
| | | // minimumLevel: 19 |
| | | })) |
| | | // baseMapLayer = |
| | | // global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | // url: '/wp/{z}/{x}/{y}.png', |
| | | // fileExtension: 'png' |
| | | // // minimumLevel: 19 |
| | | // })) |
| | | |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS', |
| | | layer: 'fzsw2019', |
| | | style: 'default', |
| | | tileMatrixSetID: 'default028mm', |
| | | format: 'image/jpgpng', |
| | | tilingScheme: new global.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' |
| | | ] |
| | | }) |
| | | ) |
| | | that.addBaseLayer() |
| | | |
| | | // global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | // url: '/fz/{z}/{x}/{y}.png', |
| | | // fileExtension: 'png' |
| | | // // minimumLevel: 19 |
| | | // })) |
| | | |
| | | var layer = global.viewer.imageryLayers.addImageryProvider(new global.DC.CustomloadingImg({ |
| | | url: '/img/base/700/d_{x}_{y}.jpg', |
| | | rectangle: global.DC.Namespace.Cesium.Rectangle.fromDegrees(114.03600407, 27.62719228, 114.04228134, 27.63428518) |
| | | })) |
| | | |
| | | baseLayer.push(layer) |
| | | |
| | | // global.viewer.imageryLayers.addImageryProvider( |
| | | // new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({ |
| | | // url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS', |
| | | // // url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/PX25DMap/Pingxiang25DMap18000/MapServer/WMTS', |
| | | // layer: 'fzsw2019', |
| | | // style: 'default', |
| | | // tileMatrixSetID: 'default028mm', |
| | | // format: 'image/jpgpng', |
| | | // tilingScheme: new global.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' |
| | | // ] |
| | | // }) |
| | | // ) |
| | | |
| | | // global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({ |
| | | // url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer', |
| | |
| | | }) |
| | | |
| | | // 最小 |
| | | global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100 |
| | | global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1100 |
| | | global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH |
| | | global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH + 1000 |
| | | // 最大 |
| | | global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400 |
| | | global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1400 |
| | | global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH |
| | | global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH + 1000 |
| | | |
| | | // 设置相机缩小时的速率 |
| | | global.viewer.scene.screenSpaceCameraController._minimumZoomRate = 2000 |
| | |
| | | |
| | | that.createdLayers() |
| | | |
| | | global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent) |
| | | // global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent) |
| | | |
| | | global.viewer.on(global.DC.MouseEventType.CLICK, (e) => { |
| | | if (that.closeMapClick) { |
| | |
| | | } |
| | | }) |
| | | |
| | | document.querySelector('.dc-zoom-controller').children[1].onclick = |
| | | function () { |
| | | if (that.dimensionValue == '真三维') { |
| | | global.viewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 220.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(-9), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } else { |
| | | global.viewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 400.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | document.querySelector('.dc-zoom-controller').children[2].onclick = |
| | | function () { |
| | | if ( |
| | | that.dimensionValue != undefined && |
| | | that.dimensionValue != '真三维' |
| | | ) { |
| | | const height = Math.ceil( |
| | | global.viewer.camera.positionCartographic.height |
| | | ) |
| | | |
| | | if (height < 150) { |
| | | this.$nextTick(() => { |
| | | document.querySelector('.dc-zoom-controller').children[1].onclick = |
| | | function () { |
| | | if (that.dimensionValue == '真三维') { |
| | | global.viewer.camera.setView({ |
| | | destination: |
| | | global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 200 |
| | | ), |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 220.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(-9), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | |
| | | return |
| | | } |
| | | |
| | | if (height < 250) { |
| | | } else { |
| | | global.viewer.camera.setView({ |
| | | destination: |
| | | global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 300 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | |
| | | return |
| | | } |
| | | |
| | | if (height < 350) { |
| | | global.viewer.camera.setView({ |
| | | destination: |
| | | global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 400 |
| | | ), |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | that.mapCenter[2] |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | |
| | | document.querySelector('.dc-zoom-controller').children[0].onclick = |
| | | function () { |
| | | if ( |
| | | that.dimensionValue != undefined && |
| | | that.dimensionValue != '真三维' |
| | | ) { |
| | | const height = Math.ceil( |
| | | global.viewer.camera.positionCartographic.height |
| | | ) |
| | | |
| | | if (height > 350) { |
| | | global.viewer.camera.setView({ |
| | | destination: |
| | | global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 300 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | |
| | | return |
| | | } |
| | | |
| | | if (height > 250) { |
| | | global.viewer.camera.setView({ |
| | | destination: |
| | | global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 200 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | |
| | | return |
| | | } |
| | | |
| | | if (height > 150) { |
| | | global.viewer.camera.setView({ |
| | | destination: |
| | | global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 100 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | |
| | | global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent) |
| | | global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent) |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | getViewExtend () { |
| | | const params = {} |
| | | const extend = global.viewer.camera.computeViewRectangle() |
| | | if (typeof extend === 'undefined') { |
| | | // 2D下会可能拾取不到坐标,extend返回undefined,所以做以下转换 |
| | | const canvas = global.viewer.scene.canvas |
| | | const upperLeft = new global.DC.Namespace.Cesium.Cartesian2(0, 0)// canvas左上角坐标转2d坐标 |
| | | const lowerRight = new global.DC.Namespace.Cesium.Cartesian2( |
| | | canvas.clientWidth, |
| | | canvas.clientHeight |
| | | )// canvas右下角坐标转2d坐标 |
| | | |
| | | const ellipsoid = global.viewer.scene.globe.ellipsoid |
| | | const upperLeft3 = global.viewer.camera.pickEllipsoid( |
| | | upperLeft, |
| | | ellipsoid |
| | | )// 2D转3D世界坐标 |
| | | |
| | | const lowerRight3 = global.viewer.camera.pickEllipsoid( |
| | | lowerRight, |
| | | ellipsoid |
| | | )// 2D转3D世界坐标 |
| | | |
| | | const upperLeftCartographic = global.viewer.scene.globe.ellipsoid.cartesianToCartographic( |
| | | upperLeft3 |
| | | )// 3D世界坐标转弧度 |
| | | const lowerRightCartographic = global.viewer.scene.globe.ellipsoid.cartesianToCartographic( |
| | | lowerRight3 |
| | | )// 3D世界坐标转弧度 |
| | | |
| | | const minx = global.DC.Namespace.Cesium.Math.toDegrees(upperLeftCartographic.longitude)// 弧度转经纬度 |
| | | const maxx = global.DC.Namespace.Cesium.Math.toDegrees(lowerRightCartographic.longitude)// 弧度转经纬度 |
| | | |
| | | const miny = global.DC.Namespace.Cesium.Math.toDegrees(lowerRightCartographic.latitude)// 弧度转经纬度 |
| | | const maxy = global.DC.Namespace.Cesium.Math.toDegrees(upperLeftCartographic.latitude)// 弧度转经纬度 |
| | | |
| | | console.log('经度:' + minx + '----' + maxx) |
| | | console.log('纬度:' + miny + '----' + maxy) |
| | | |
| | | params.minx = minx |
| | | params.maxx = maxx |
| | | params.miny = miny |
| | | params.maxy = maxy |
| | | } else { |
| | | // 3D获取方式 |
| | | params.maxx = global.DC.Namespace.Cesium.Math.toDegrees(extend.east) |
| | | params.maxy = global.DC.Namespace.Cesium.Math.toDegrees(extend.north) |
| | | |
| | | params.minx = global.DC.Namespace.Cesium.Math.toDegrees(extend.west) |
| | | params.miny = global.DC.Namespace.Cesium.Math.toDegrees(extend.south) |
| | | } |
| | | return params // 返回屏幕所在经纬度范围 |
| | | }, |
| | | |
| | | zoomToOpen () { |
| | | |
| | | }, |
| | | |
| | | locationSTM () { |
| | | global.viewer.flyToPosition('116.45793269658417,39.92711385557482,617.5967826044838,181.95219395269424,-21.286437065473546') |
| | | }, |
| | | |
| | | mouseMoveEvent (e) { |
| | | var that = this |
| | | |
| | | function heightToZoom (height) { |
| | | var A = 40487.57 |
| | | var B = 0.00007096758 |
| | | var C = 91610.74 |
| | | var D = -40467.74 |
| | | return Math.round(D + (A - D) / (1 + Math.pow(height / C, B))) |
| | | } |
| | | var height = Math.ceil(global.viewer.camera.positionCartographic.height) |
| | | var zoom = heightToZoom(height) |
| | | |
| | | that.zoomValue = zoom |
| | | |
| | | if (that.closeMapClick) { |
| | | return |
| | |
| | | } |
| | | }, |
| | | |
| | | addBaseLayer () { |
| | | // this.updateBaseLayer() |
| | | }, |
| | | |
| | | raiseBaseLayer (array) { |
| | | if (baseLayer.length > 0) { |
| | | array.forEach(item => { |
| | | baseLayer.forEach((it, index) => { |
| | | if (it.id.indexOf(item.id) != -1 && it.id.indexOf(viewerHeight) == -1) { |
| | | global.viewer.imageryLayers.lowerToBottom( |
| | | it.layer |
| | | ) |
| | | |
| | | it.layer.show = false |
| | | |
| | | baseLayer.splice(index, 1) |
| | | } |
| | | }) |
| | | }) |
| | | |
| | | console.log(baseLayer) |
| | | } |
| | | }, |
| | | |
| | | updateBaseLayer () { |
| | | const extent = this.getViewExtend() |
| | | |
| | | // var position = global.viewer.scene.cartesianToCanvasCoordinates(global.DC.Namespace.Cesium.Cartesian3.fromDegrees(extent.maxx, extent.maxy)) |
| | | // var position1 = global.viewer.scene.cartesianToCanvasCoordinates(global.DC.Namespace.Cesium.Cartesian3.fromDegrees(extent.minx, extent.miny)) |
| | | |
| | | // console.log(position, position1) |
| | | |
| | | const array = baseLayerImgUrl.filter(item => { |
| | | return item[viewerHeight] |
| | | }) |
| | | |
| | | var oldLayer = [] |
| | | |
| | | array[0][viewerHeight].forEach(sm => { |
| | | let startFlag = false |
| | | |
| | | startFlag = baseLayer.some(dt => { |
| | | return dt.id.indexOf(sm.id) != -1 && dt.id.indexOf(viewerHeight) != -1 |
| | | }) |
| | | |
| | | if (startFlag == true) return |
| | | |
| | | if ( |
| | | ( |
| | | sm.rectangle[0] > extent.minx && |
| | | sm.rectangle[1] > extent.miny && |
| | | sm.rectangle[2] < extent.maxx && |
| | | sm.rectangle[3] < extent.maxy |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] < extent.minx && |
| | | sm.rectangle[1] < extent.maxy && |
| | | sm.rectangle[2] > extent.minx && |
| | | sm.rectangle[3] > extent.maxy |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] < extent.maxx && |
| | | sm.rectangle[1] < extent.maxy && |
| | | sm.rectangle[2] > extent.maxx && |
| | | sm.rectangle[3] > extent.maxy |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] < extent.maxx && |
| | | sm.rectangle[1] < extent.miny && |
| | | sm.rectangle[2] > extent.maxx && |
| | | sm.rectangle[3] > extent.miny |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] < extent.minx && |
| | | sm.rectangle[1] < extent.miny && |
| | | sm.rectangle[2] > extent.minx && |
| | | sm.rectangle[3] > extent.miny |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] > extent.minx && |
| | | sm.rectangle[1] < extent.maxy && |
| | | sm.rectangle[2] < extent.maxx && |
| | | sm.rectangle[3] > extent.maxy |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] > extent.minx && |
| | | sm.rectangle[1] > extent.miny && |
| | | sm.rectangle[2] > extent.maxx && |
| | | sm.rectangle[3] < extent.maxy |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] > extent.minx && |
| | | sm.rectangle[1] < extent.miny && |
| | | sm.rectangle[2] < extent.maxx && |
| | | sm.rectangle[3] > extent.miny |
| | | ) || |
| | | ( |
| | | sm.rectangle[0] < extent.minx && |
| | | sm.rectangle[1] > extent.miny && |
| | | sm.rectangle[2] > extent.minx && |
| | | sm.rectangle[3] < extent.maxy |
| | | ) |
| | | ) { |
| | | var signl = new global.DC.Namespace.Cesium.SingleTileImageryProvider({ |
| | | url: sm.url, |
| | | rectangle: global.DC.Namespace.Cesium.Rectangle.fromDegrees(sm.rectangle[0], sm.rectangle[1], sm.rectangle[2], sm.rectangle[3]) |
| | | }) |
| | | |
| | | var layer = global.viewer.imageryLayers.addImageryProvider(signl) |
| | | |
| | | oldLayer.push({ id: sm.id }) |
| | | |
| | | baseLayer.push({ layer, id: sm.id + viewerHeight }) |
| | | } |
| | | }) |
| | | |
| | | this.raiseBaseLayer(oldLayer) |
| | | }, |
| | | |
| | | mapCameraEvent () { |
| | | const height = Math.ceil( |
| | | global.viewer.camera.positionCartographic.height |
| | | ) |
| | | const that = this |
| | | |
| | | const height = global.viewer.camera.positionCartographic.height |
| | | |
| | | heightChange = viewerHeight |
| | | |
| | | global.viewer.camera.setView({ |
| | | orientation: { |
| | |
| | | } |
| | | }) |
| | | |
| | | if (height < 150) { |
| | | global.viewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 100 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | if (height > fiveVH - heightDifferenceValue) { |
| | | viewerHeight = fiveVH |
| | | } else if (height <= fourVH + heightDifferenceValue && height > fourVH - heightDifferenceValue) { |
| | | viewerHeight = fourVH |
| | | } else if (height <= twoVH + heightDifferenceValue && height > twoVH - heightDifferenceValue) { |
| | | viewerHeight = twoVH |
| | | } else if (height <= oneVH + 50) { |
| | | viewerHeight = oneVH |
| | | } |
| | | |
| | | if (height > 150 && height <= 250) { |
| | | global.viewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 200 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | if (heightChange != viewerHeight) { |
| | | var layer = null |
| | | if (viewerHeight == 500) { |
| | | layer = global.viewer.imageryLayers.addImageryProvider(new global.DC.CustomloadingImg({ |
| | | url: '/img/base/500/d_{x}_{y}.jpg', |
| | | rectangle: global.DC.Namespace.Cesium.Rectangle.fromDegrees(114.03600407, 27.62719228, 114.04228134, 27.63428518) |
| | | })) |
| | | |
| | | baseLayer.push(layer) |
| | | |
| | | global.viewer.imageryLayers.remove(baseLayer[0]) |
| | | |
| | | baseLayer.splice(0, 1) |
| | | } else if (viewerHeight == 700) { |
| | | layer = global.viewer.imageryLayers.addImageryProvider(new global.DC.CustomloadingImg({ |
| | | url: '/img/base/700/d_{x}_{y}.jpg', |
| | | rectangle: global.DC.Namespace.Cesium.Rectangle.fromDegrees(114.03600407, 27.62719228, 114.04228134, 27.63428518) |
| | | })) |
| | | |
| | | baseLayer.push(layer) |
| | | |
| | | global.viewer.imageryLayers.remove(baseLayer[0]) |
| | | |
| | | baseLayer.splice(0, 1) |
| | | } |
| | | } |
| | | |
| | | if (height > 250 && height <= 350) { |
| | | global.viewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 300 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (height > 350) { |
| | | global.viewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.viewer.camera.positionCartographic.longitude, |
| | | global.viewer.camera.positionCartographic.latitude, |
| | | 400 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | // that.updateBaseLayer() |
| | | }, |
| | | |
| | | smallMapCameraEvent () { |
| | | const height = Math.ceil( |
| | | global.eagleViewer.camera.positionCartographic.height |
| | | ) |
| | | |
| | | global.eagleViewer.camera.setView({ |
| | | orientation: { |
| | | // 指向 |
| | |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | |
| | | if (height < 1150) { |
| | | global.eagleViewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.eagleViewer.camera.positionCartographic.longitude, |
| | | global.eagleViewer.camera.positionCartographic.latitude, |
| | | 1100 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (height > 1150 && height <= 1250) { |
| | | global.eagleViewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.eagleViewer.camera.positionCartographic.longitude, |
| | | global.eagleViewer.camera.positionCartographic.latitude, |
| | | 1200 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (height > 1250 && height <= 1350) { |
| | | global.eagleViewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.eagleViewer.camera.positionCartographic.longitude, |
| | | global.eagleViewer.camera.positionCartographic.latitude, |
| | | 1300 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (height > 1350) { |
| | | global.eagleViewer.camera.setView({ |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians( |
| | | global.eagleViewer.camera.positionCartographic.longitude, |
| | | global.eagleViewer.camera.positionCartographic.latitude, |
| | | 1400 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-90), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | createdLayers () { |
| | |
| | | global.viewer.flyToPosition('120.670183527,31.348282115,109658.22,0,-89.90659095062371') |
| | | }, |
| | | |
| | | addQxTileset () { |
| | | qxTilesetLayer = new global.DC.TilesetLayer('qxTilesetLayer') |
| | | global.viewer.addLayer(qxTilesetLayer) |
| | | |
| | | qxTileset = new global.DC.Tileset('/qx/tileset.json', { |
| | | luminanceAtZenith: 0.4, |
| | | // cullWithChildrenBounds: false, |
| | | // cullRequestsWhileMoving: false, |
| | | // skipLevelOfDetail: false, |
| | | shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED |
| | | }) |
| | | qxTileset.setHeight(18) |
| | | qxTilesetLayer.addOverlay(qxTileset) |
| | | }, |
| | | |
| | | removeQxTileset () { |
| | | qxTilesetLayer.removeOverlay(qxTileset) |
| | | global.viewer.removeLayer(qxTilesetLayer) |
| | | qxTileset = null |
| | | qxTilesetLayer = null |
| | | }, |
| | | |
| | | addMxTileset () { |
| | | const that = this |
| | | tilesetLayer = new global.DC.TilesetLayer('tilesetLayer') |
| | | global.viewer.addLayer(tilesetLayer) |
| | | tileset = new global.DC.Tileset('/mx/tileset.json', { |
| | | luminanceAtZenith: 0.4, |
| | | // cullWithChildrenBounds: false, |
| | | // cullRequestsWhileMoving: false, |
| | | // skipLevelOfDetail: false, |
| | | shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED |
| | | }) |
| | | tileset.setHeight(150) |
| | | tilesetLayer.addOverlay(tileset) |
| | | tileset.on(global.DC.MouseEventType.CLICK, that.tilesetClick) |
| | | }, |
| | | |
| | | removeMxTileset () { |
| | | const that = this |
| | | tileset.off(global.DC.MouseEventType.CLICK, that.tilesetClick) |
| | | tilesetLayer.removeOverlay(tileset) |
| | | global.viewer.removeLayer(tilesetLayer) |
| | | tileset = null |
| | | tilesetLayer = null |
| | | }, |
| | | |
| | | qxChangeEvent (change) { |
| | | const that = this |
| | | global.viewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | 114.03989859, |
| | | 27.62581763, |
| | | 420.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(-9), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | |
| | | global.eagleViewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 1420.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | | heading: global.DC.Namespace.Cesium.Math.toRadians(-9), |
| | | // 视角 |
| | | pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54), |
| | | roll: 0.0 |
| | | } |
| | | }) |
| | | if (change) { |
| | | that.removeMxTileset() |
| | | that.addQxTileset() |
| | | } else { |
| | | that.removeQxTileset() |
| | | that.addMxTileset() |
| | | } |
| | | }, |
| | | |
| | | generatePosition (num) { |
| | | const list = [] |
| | | for (let i = 0; i < num; i++) { |
| | |
| | | that.$store.commit('SET_TWOORTHREE', that.dimensionValue) |
| | | |
| | | if (that.dimensionValue == '真三维') { |
| | | that.btnGroupShow = true |
| | | that.createSAT() |
| | | that.createTC() |
| | | global.viewer.off(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent) |
| | | global.viewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent) |
| | | global.eagleViewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent) |
| | | |
| | | yxLayer = global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0', |
| | | subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'], |
| | | format: 'image/jpeg', |
| | | show: true, |
| | | maximumLevel: 18 |
| | | }) |
| | | ) |
| | | |
| | | dxLayer = global.DC.TerrainFactory.createUrlTerrain({ |
| | | url: 'http://data.marsgis.cn/terrain' |
| | | }) |
| | | global.viewer.addTerrain(dxLayer) |
| | | |
| | | that.btnGroupShow = true |
| | | that.createSAT() |
| | | that.createTC() |
| | | |
| | | that.removeLayers() |
| | | global.viewer.imageryLayers.remove(baseMapLayer) |
| | | baseMapLayer = null |
| | | baseLayer.forEach(item => { |
| | | global.viewer.imageryLayers.remove( |
| | | item.layer |
| | | ) |
| | | }) |
| | | |
| | | baseLayer = [] |
| | | |
| | | silhouetteBlue.selected = [] |
| | | |
| | | tilesetLayer = new global.DC.TilesetLayer('tilesetLayer') |
| | | global.viewer.addLayer(tilesetLayer) |
| | | tileset = new global.DC.Tileset('/mx/tileset.json', { |
| | | luminanceAtZenith: 0.4, |
| | | // cullWithChildrenBounds: false, |
| | | // cullRequestsWhileMoving: false, |
| | | // skipLevelOfDetail: false, |
| | | shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED |
| | | }) |
| | | tilesetLayer.addOverlay(tileset) |
| | | tileset.on(global.DC.MouseEventType.CLICK, that.tilesetClick) |
| | | tilesetLayer.show = true |
| | | that.addMxTileset() |
| | | |
| | | streenMlayer = new global.DC.S3MLayer('streenMlayer', 'http://resource.dvgis.cn/data/3dtiles/CBD/cbd.scp') |
| | | global.viewer.addLayer(streenMlayer) |
| | |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | | // fromDegrees()方法,将经纬度和高程转换为世界坐标 |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 220.0 |
| | | 114.03989859, |
| | | 27.62581763, |
| | | 420.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 1220.0 |
| | | 1420.0 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | |
| | | } |
| | | }) |
| | | } else { |
| | | global.viewer.imageryLayers.remove(yxLayer) |
| | | global.viewer.removeTerrain(dxLayer) |
| | | |
| | | that.btnGroupShow = false |
| | | that.removeSAT() |
| | | that.removeTC() |
| | | global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent) |
| | | global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent) |
| | | global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent) |
| | | tileset.off(global.DC.MouseEventType.CLICK, that.tilesetClick) |
| | | tilesetLayer.removeOverlay(tileset) |
| | | tilesetLayer.show = false |
| | | global.viewer.removeLayer(tilesetLayer) |
| | | tileset = null |
| | | tilesetLayer = null |
| | | if (tilesetLayer != null) that.removeMxTileset() |
| | | if (qxTilesetLayer != null) that.removeQxTileset() |
| | | |
| | | global.viewer.removeLayer(streenMlayer) |
| | | streenMlayer = null |
| | | that.createdLayers() |
| | | |
| | | baseMapLayer = global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | | url: '/wp/{z}/{x}/{y}.png', |
| | | fileExtension: 'png' |
| | | })) |
| | | that.addBaseLayer() |
| | | |
| | | global.viewer.camera.setView({ |
| | | // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州 |
| | |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 400.0 |
| | | that.mapCenter[2] |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | |
| | | destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees( |
| | | that.mapCenter[0], |
| | | that.mapCenter[1], |
| | | 1400.0 |
| | | maxVH + 1000 |
| | | ), |
| | | orientation: { |
| | | // 指向 |
| | |
| | | } |
| | | }) |
| | | // 最小 |
| | | global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100 |
| | | global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1100 |
| | | global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH |
| | | global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH + 1000 |
| | | // 最大 |
| | | global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400 |
| | | global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1400 |
| | | global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH |
| | | global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH + 1000 |
| | | // 视角旋转 |
| | | global.viewer.scene.screenSpaceCameraController.enableTilt = false |
| | | global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false |
| | |
| | | right: 141px; |
| | | z-index: 99; |
| | | } |
| | | |
| | | .sat-qx { |
| | | position: fixed; |
| | | top: 66px; |
| | | right: 220px; |
| | | z-index: 99; |
| | | background: #fff; |
| | | } |
| | | </style> |