| | |
| | | </div> |
| | | |
| | | <!-- 左下角倍率信息 --> |
| | | <div class="zoom-info"> |
| | | <el-tag type="success">倍率: {{ zoomRatio.toFixed(1) }}X</el-tag> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <div class="zoom-info"> |
| | | <el-tag type="success">倍率: {{ zoomRatio.toFixed(1) }}X</el-tag><br> |
| | | <el-tag type="success">距离: {{ betweenDistance.toFixed(1) }}米</el-tag><br> |
| | | <el-tag type="success">P: {{ cameraP }} T: {{ cameraT }} </el-tag> |
| | | </div> |
| | | |
| | | |
| | | <!-- botton --> |
| | |
| | | // let pois = [0, 0,0] |
| | | let holdingPosition; |
| | | let rightKeyMove = false |
| | | let distance = 100; |
| | | let distance = 25; |
| | | export default { |
| | | props: { |
| | | towerUrl: { |
| | |
| | | default() { |
| | | return '' |
| | | } |
| | | }, |
| | | deviceData: { |
| | | type: Object, |
| | | }, |
| | | }, |
| | | data(){ |
| | |
| | | 14: '14X', |
| | | 28: '28X', |
| | | 56: '56X' |
| | | } |
| | | }, |
| | | betweenDistance:0, |
| | | cameraP:0.0, |
| | | cameraT:0.0, |
| | | pointGround: { lon: 0, lat: 0, height: 0 }, |
| | | pointFly: { lon: 0, lat: 0, height: 0 }, |
| | | rowData:null |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.initCesium(); |
| | | console.log(this.deviceData) |
| | | }, |
| | | computed: { |
| | | boxWidth() { |
| | |
| | | control.enableTilt = false; |
| | | control.enableLook = false; |
| | | viewerC.scene.camera.percentageChanged = 0.05 |
| | | this.cammove_measure_point(); |
| | | },1000) |
| | | }, |
| | | |
| | |
| | | fullscreenButton: false, |
| | | vrButton: false, |
| | | }); |
| | | // 关闭天空盒效果 |
| | | // viewer.scene.skyAtmosphere = undefined; // 或者设置为 null |
| | | |
| | | // // 关闭光照效果 |
| | | // viewer.scene.globe.enableLighting = false; // 关闭光照效果 |
| | | |
| | | // viewer.imageryLayers.add(bdtvectoranoimagery); |
| | | viewer._cesiumWidget._creditContainer.style.display="none"; |
| | | return viewer; |
| | | |
| | |
| | | // 设置视角,使其默认查看某个地理位置 |
| | | viewerM.scene.camera.setView({ |
| | | destination: Cesium.Cartesian3.fromDegrees(globalon, globalat, 349.0), // 以经纬度设置位置(例如:大庆龙兴路) |
| | | // destination: Cesium.Cartesian3.fromDegrees(0.0005, 0.0017, 207.8), // 以经纬度设置位置(例如:大庆龙兴路) |
| | | orientation: { |
| | | heading: Cesium.Math.toRadians(194.65), // 方向 |
| | | pitch: Cesium.Math.toRadians(-31.43), // 俯角 |
| | |
| | | }, |
| | | addSyncListener() { |
| | | // 存下回调以便销毁 |
| | | // this._preRenderCallback = () => this.syncViewer(); |
| | | viewerM.scene.preRender.addEventListener( this.syncViewer()); |
| | | window.addEventListener("keydown", this.handleKeydown); |
| | | }, |
| | | syncViewer(){ |
| | | console.log(viewerM.camera) |
| | | viewerC.camera.flyTo({ |
| | | destination: viewerM.camera.position, |
| | | orientation: { |
| | |
| | | creatPin(id, position, font, color, viewer) { |
| | | let pinBuilder = new Cesium.PinBuilder(); |
| | | let addPin = viewer.entities.getById(id); |
| | | console.log(addPin) |
| | | if (addPin == undefined) { |
| | | viewer.entities.add({ |
| | | id: id, |
| | |
| | | let lng = Cesium.Math.toDegrees(cartographic.longitude); |
| | | let lat = Cesium.Math.toDegrees(cartographic.latitude); |
| | | height = cartographic.height; |
| | | console.log(lng+','+lat+','+height) |
| | | } |
| | | |
| | | //在两个窗口创建标注 |
| | |
| | | //根据偏移量求偏移向量 |
| | | const scalerNormalize = Cesium.Cartesian3.multiplyByScalar(normalize,distance,new Cesium.Cartesian3()); |
| | | const tagert = Cesium.Cartesian3.add(holdingPosition,scalerNormalize,new Cesium.Cartesian3()); |
| | | console.log(Cesium.Cartographic.fromCartesian(tagert)) |
| | | //创建空中点pin |
| | | _this.creatPin("aerialPoiId"+counter,tagert,`空${counter}`,Cesium.Color.RED,viewerM); |
| | | // preVideoScopePrimitiveArrTie = [] |
| | | console.log(preVideoScopePrimitiveArrTie) |
| | | |
| | | console.log(Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).height)) |
| | | //更新键盘事件 |
| | | _this.updateCameraMovement(); |
| | | // if(cameraVideo){ |
| | | // viewerM.scene.primitives.remove(cameraVideo) |
| | | // } |
| | | chooseId = crypto.randomUUID() |
| | | //创建视锥体 |
| | | //当前选择的id |
| | | // chooseId = crypto.randomUUID() |
| | | chooseId = _this.genId() |
| | | //创建视锥体 |
| | | let data = { |
| | | "FHorFieldAngle": 32.13, |
| | | "FVerFieldAngle": 18.39, |
| | | "altitude": Cesium.Cartographic.fromCartesian(tagert).height, |
| | | "id": chooseId, |
| | | "chanNo": 1, |
| | | 'name':`空中点${counter}`, |
| | | "latitude": Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude), |
| | | "longitude": Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude), |
| | | "p": 26.8, |
| | | "t": 351.3, |
| | | "z": 1, |
| | | } |
| | | const point1 = Cesium.Cartesian3.fromDegrees(0, 0, 50); |
| | | const lookPoint = Cesium.Cartesian3.fromDegrees(longitude, latitude) |
| | | const watchPoint = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude), Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude)) |
| | | const betweenDistanceWatch = Cesium.Cartesian3.distance(lookPoint, watchPoint) |
| | | _this.betweenDistance = betweenDistanceWatch |
| | | console.log(lookPoint) |
| | | console.log(watchPoint) |
| | | // const guanPoint1 = Cesium.Cartesian3.fromDegrees(longitude, latitude) |
| | | console.log(viewerM.entities.getById('groundPoiId0')) |
| | | //塔的距离和观测点的距离 |
| | | console.log(_this.deviceData) |
| | | const point1 = Cesium.Cartesian3.fromDegrees(0, 0, _this.deviceData?.modelHeight || 45); |
| | | _this.pointGround = { |
| | | lon:longitude, |
| | | lat:latitude, |
| | | height:height |
| | | } |
| | | // const point1 = Cesium.Cartesian3.fromDegrees(0, 0, 45); |
| | | const point2 = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude), Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude), Cesium.Cartographic.fromCartesian(tagert).height); |
| | | |
| | | _this.pointFly = { |
| | | lon:Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude), |
| | | lat:Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude), |
| | | height:Cesium.Cartographic.fromCartesian(tagert).height |
| | | } |
| | | _this.createDashedLine() |
| | | _this.createBillboard() |
| | | // 计算距离(单位:米) |
| | | const distance1 = Cesium.Cartesian3.distance(point1, point2) |
| | | console.log(distance1) |
| | | data.distance = distance1 |
| | | const distanceCalculate = Cesium.Cartesian3.distance(point1, point2) |
| | | data.distance = distanceCalculate |
| | | //右键结束后把缩放重置为1 |
| | | _this.zoomRatio = 1 |
| | | _this.createVideoScope(data) |
| | | setTimeout(() => { |
| | | viewerC.camera.changed.addEventListener(_this.onCameraChange) |
| | | }, 100); |
| | | |
| | | |
| | | //左侧树结构联动 |
| | | _this.dealTree() |
| | | //结束右键监听 |
| | | createPinHandler.destroy(); |
| | | //结束主图联动鹰眼监听 |
| | |
| | | } |
| | | console.log('右键点击监听已停止'); |
| | | }, Cesium.ScreenSpaceEventType.RIGHT_CLICK); // 监听右键点击 |
| | | }, |
| | | createDashedLine() { |
| | | this.lineEntity = viewerM.entities.add({ |
| | | polyline: { |
| | | positions: new Cesium.CallbackProperty(() => { |
| | | return Cesium.Cartesian3.fromDegreesArrayHeights([ |
| | | this.pointGround.lon, this.pointGround.lat, this.pointGround.height, |
| | | this.pointFly.lon, this.pointFly.lat, this.pointFly.height, |
| | | ]); |
| | | }, false), |
| | | width: 3, |
| | | material: new Cesium.PolylineDashMaterialProperty({ |
| | | color: Cesium.Color.RED, |
| | | }), |
| | | }, |
| | | }); |
| | | }, |
| | | createBillboard() { |
| | | // Billboard 中点计算 |
| | | viewerM.entities.add({ |
| | | position: new Cesium.CallbackProperty(() => { |
| | | const midLon = (this.pointGround.lon + this.pointFly.lon) / 2; |
| | | const midLat = (this.pointGround.lat + this.pointFly.lat) / 2; |
| | | const midHeight = (this.pointGround.height + this.pointFly.height) / 2; |
| | | return Cesium.Cartesian3.fromDegrees(midLon, midLat, midHeight); |
| | | }, false), |
| | | label: { |
| | | text: new Cesium.CallbackProperty(() => { |
| | | return `距离: ${this.betweenDistance.toFixed(1)} m\nP: ${this.cameraP}\nT:${this.cameraT}`; |
| | | }, false), |
| | | font: "16px sans-serif", |
| | | fillColor: Cesium.Color.BLACK, |
| | | outlineColor: Cesium.Color.WHITE, |
| | | outlineWidth: 2, |
| | | style: Cesium.LabelStyle.FILL_AND_OUTLINE, |
| | | verticalOrigin: Cesium.VerticalOrigin.BOTTOM, |
| | | horizontalOrigin: Cesium.HorizontalOrigin.CENTER, |
| | | pixelOffset: new Cesium.Cartesian2(0, -20), // 向上偏移 |
| | | showBackground: true, |
| | | backgroundColor: new Cesium.Color(1, 1, 1, 0.7), |
| | | }, |
| | | }); |
| | | }, |
| | | azimuthtwopoi(x1, y1, x2, y2) { |
| | | let result; |
| | |
| | | return result; |
| | | }, |
| | | changeCamera(position,heading){ |
| | | console.log(position) |
| | | console.log(heading) |
| | | viewerC.camera.flyTo({ |
| | | destination: position, |
| | | orientation: { |
| | |
| | | } |
| | | }, |
| | | onKeyUp(event) { |
| | | console.log() |
| | | //键盘抬起进行更新左侧空中点pin |
| | | //获取右侧相机 |
| | | if(rightKeyMove){ |
| | |
| | | } else { |
| | | groupEntity.position = position; |
| | | } |
| | | console.log(groupEntity) |
| | | //计算两个点距离 |
| | | console.log(viewerM.entities) |
| | | const groupEntityGround = viewerM.entities.getById("groundPoiId"+(counter-1)); |
| | | const groupPosition = groupEntityGround.position.getValue(Cesium.JulianDate.now()); |
| | | if (groupPosition) { |
| | | const cartographic = Cesium.Cartographic.fromCartesian(groupPosition); |
| | | const longitude = Cesium.Math.toDegrees(cartographic.longitude); |
| | | const latitude = Cesium.Math.toDegrees(cartographic.latitude); |
| | | const point1 = Cesium.Cartesian3.fromDegrees(lon, lat); |
| | | const point2 = Cesium.Cartesian3.fromDegrees(longitude, latitude); |
| | | const gure = Cesium.Cartesian3.distance(point1, point2) |
| | | this.betweenDistance = gure |
| | | } |
| | | if(this.rowData) { |
| | | this.pointGround = { |
| | | lon:this.rowData.longitude, |
| | | lat:this.rowData.latitude, |
| | | height:this.rowData.height |
| | | } |
| | | } |
| | | this.pointFly = { |
| | | lon: lon, |
| | | lat: lat, |
| | | height: height |
| | | } |
| | | this.dealTree() |
| | | } |
| | | const key = event.key; |
| | | const lower = key.toLowerCase(); |
| | |
| | | // Fly back to the initial view (home) in 1 second |
| | | viewerC.camera.flyHome(1.0); |
| | | }, |
| | | move_measure_point(){ |
| | | CesiumSurvey.measureMovePoint(viewerC,'moveResultCon'); |
| | | }, |
| | | cammove_measure_point(){ |
| | | CesiumSurvey.cammeasureMovePoint(viewerC,'cammoveResultCon'); |
| | | dealTree(){ |
| | | let allEntities = viewerM.entities.values; // 所有实体对象组成的数组 |
| | | const grouped = {}; |
| | | //所有实体对象组成的数组转换成左侧树需要的格式 |
| | | allEntities.forEach(item => { |
| | | const match = item.id.match(/(groundPoiId|aerialPoiId)(\d+)/); |
| | | if (match) { |
| | | const type = match[1]; // groundPoiId or aerialPoiId |
| | | const index = match[2]; |
| | | if (!grouped[index]) grouped[index] = {}; |
| | | grouped[index][type] = item.position; |
| | | } |
| | | }) |
| | | const result = Object.keys(grouped).map((key, idx) => { |
| | | const group = grouped[key]; |
| | | const positionGround = group.groundPoiId.getValue(Cesium.JulianDate.now()) |
| | | const positionAerialPo = group.aerialPoiId.getValue(Cesium.JulianDate.now()) |
| | | const groundPos = Cesium.Cartographic.fromCartesian(positionGround); |
| | | const aerialPos = Cesium.Cartographic.fromCartesian(positionAerialPo); |
| | | return { |
| | | id: this.genId(), |
| | | label: `地面点${idx}`, |
| | | longitude: Cesium.Math.toDegrees(groundPos.longitude), |
| | | latitude: Cesium.Math.toDegrees(groundPos.latitude), |
| | | height: groundPos.height, |
| | | children: [ |
| | | { |
| | | id: this.genId(), |
| | | label: `空中点${idx}`, |
| | | longitude: Cesium.Math.toDegrees(aerialPos.longitude), |
| | | latitude: Cesium.Math.toDegrees(aerialPos.latitude), |
| | | height: aerialPos.height, |
| | | heading:Cesium.Math.toDegrees(viewerC.camera.heading), |
| | | pitch:Cesium.Math.toDegrees(viewerC.camera.pitch) |
| | | } |
| | | ] |
| | | }; |
| | | }); |
| | | this.$emit('dealTreeData',result) |
| | | }, |
| | | mergePoint(){ |
| | | let allEntities = viewerM.entities.values; // 所有实体对象组成的数组 |
| | |
| | | ] |
| | | }; |
| | | }); |
| | | console.log(result) |
| | | this.$emit('mergePoint',result,this.mergeNumber,viewerM) |
| | | }, |
| | | genId() { |
| | |
| | | }, |
| | | handleKeydown(e) { |
| | | const key = e.key; |
| | | console.log(key) |
| | | const validKeys = ["a", "s", "d", "w",'q','e','ArrowUp','ArrowDown','ArrowLeft','ArrowRight','q','e']; |
| | | if (validKeys.includes(key)) { |
| | | this.triggerKey(key); |
| | |
| | | }, |
| | | // 创建初始化的光轴 |
| | | createVideoScope(data) { |
| | | console.log(data) |
| | | console.log(data.distance) |
| | | if (data == undefined) { |
| | | this.$message({ |
| | | showClose: true, |
| | |
| | | // Number(data.altitude) + Number(hight[1]) + 1.7 |
| | | Number(data.altitude) |
| | | ); |
| | | console.log(data) |
| | | let inverseViewMatrix = this.hpr2m({ |
| | | position: positionCt3, // 相机坐标 |
| | | // heading: Cesium.Math.toRadians(Number(120)), |
| | |
| | | roll: Cesium.Math.toRadians(0), |
| | | }); |
| | | let frustum = new Cesium.PerspectiveFrustum({ |
| | | fov: Cesium.Math.toRadians(1), |
| | | fov: Cesium.Math.toRadians(56), |
| | | aspectRatio: Number(1.77778), // 宽高比 |
| | | near: Number(0.05), // 设备焦距 |
| | | far: Number(data.distance), // 拍摄距离 |
| | |
| | | ); |
| | | // viewer.scene.primitives.add(cameraVideo); |
| | | let pmObj = {}; |
| | | console.log(data) |
| | | pmObj.id = data.id; |
| | | console.log(pmObj) |
| | | pmObj.name = data.name; |
| | | pmObj.primitive = cameraVideo; |
| | | // pmCollection.push(pmObj);//幕布,视频转换使用 |
| | | viewerM.scene.primitives.add(cameraVideo); |
| | | preVideoScopePrimitiveArrTie.push(pmObj); |
| | | preVideoScopePrimitiveArrTie.map((item)=>{ |
| | | console.log(item) |
| | | console.log(chooseId) |
| | | if(item.id != chooseId){ |
| | | item.primitive.show = false |
| | | } |
| | |
| | | const heading = Cesium.Math.toDegrees(camera.heading); |
| | | const pitch = Cesium.Math.toDegrees(camera.pitch); |
| | | const roll = Cesium.Math.toDegrees(camera.roll); |
| | | const point1 = Cesium.Cartesian3.fromDegrees(0, 0, 50); |
| | | const point1 = Cesium.Cartesian3.fromDegrees(0, 0, this.deviceData?.modelHeight || 45); |
| | | const point2 = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height) |
| | | |
| | | var camResult = |
| | | position.longitude.toFixed(4) + |
| | | '\u00B0' + |
| | | ',' + |
| | | position.latitude.toFixed(4) + |
| | | '\u00B0' + |
| | | ',' + |
| | | position.height.toFixed(1) + |
| | | '米,' + |
| | | heading.toFixed(2) + |
| | | '\u00B0' + |
| | | ',' + |
| | | pitch.toFixed(2) + |
| | | '\u00B0' + |
| | | ',' + |
| | | roll.toFixed(1) + |
| | | '\u00B0'; |
| | | console.log(heading) |
| | | this.cameraP = heading.toFixed(2) |
| | | this.cameraT = pitch.toFixed(2) |
| | | document.getElementById('cammoveResultCon').innerHTML = camResult; |
| | | // 计算距离(单位:米) |
| | | const distanceBetween = Cesium.Cartesian3.distance(point1, point2) |
| | | console.log(distanceBetween) |
| | | console.log(preVideoScopePrimitiveArrTie) |
| | | console.log(chooseId) |
| | | preVideoScopePrimitiveArrTie.map((item)=>{ |
| | | if(item.id == chooseId){ |
| | | let obj = this.updateSZScope(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height,heading,pitch,roll,this.zoomRatio,distanceBetween) |
| | | item.primitive.inverseViewMatrix = obj.M |
| | | item.primitive.frustum = obj.F |
| | | item.primitive.zoomRatio = this.zoomRatio |
| | | } |
| | | }) |
| | | }, |
| | |
| | | Number(lat), |
| | | Number(alt) |
| | | ); |
| | | console.log(positionCt3) |
| | | console.log(distanceBetween) |
| | | let frustum = new Cesium.PerspectiveFrustum({ |
| | | fov: Cesium.Math.toRadians(LightView), |
| | | fov: Cesium.Math.toRadians(56/LightView), |
| | | aspectRatio: Number(1.77778), |
| | | near: Number(0.05), |
| | | far: Number(distanceBetween), |
| | | }); |
| | | console.log(frustum) |
| | | let inverseViewMatrixNew = this.hpr2m({ |
| | | position: positionCt3, |
| | | heading: Cesium.Math.toRadians(Number(camHeading)), |
| | | pitch: Cesium.Math.toRadians(Number(camPitch)), |
| | | roll: Cesium.Math.toRadians(Number(camRoll)), |
| | | }); |
| | | console.log(inverseViewMatrixNew) |
| | | return {M: inverseViewMatrixNew, F: frustum}; |
| | | }, |
| | | handleWheel(event) { |
| | |
| | | }, |
| | | onSliderInput(val) { |
| | | this.zoomRatio = val; |
| | | }, |
| | | // 计算 heading(偏航角) |
| | | computeHeading(fromCartesian, toCartesian) { |
| | | const transform = Cesium.Transforms.eastNorthUpToFixedFrame(fromCartesian); |
| | | const direction = Cesium.Cartesian3.subtract( |
| | | toCartesian, |
| | | fromCartesian, |
| | | new Cesium.Cartesian3() |
| | | ); |
| | | const directionLocal = Cesium.Matrix4.multiplyByPointAsVector( |
| | | Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4()), |
| | | direction, |
| | | new Cesium.Cartesian3() |
| | | ); |
| | | Cesium.Cartesian3.normalize(directionLocal, directionLocal); |
| | | return Math.atan2(directionLocal.x, directionLocal.y); |
| | | }, |
| | | |
| | | // 计算 pitch(俯仰角) |
| | | computePitch(fromCartesian, toCartesian) { |
| | | const transform = Cesium.Transforms.eastNorthUpToFixedFrame(fromCartesian); |
| | | const direction = Cesium.Cartesian3.subtract( |
| | | toCartesian, |
| | | fromCartesian, |
| | | new Cesium.Cartesian3() |
| | | ); |
| | | const directionLocal = Cesium.Matrix4.multiplyByPointAsVector( |
| | | Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4()), |
| | | direction, |
| | | new Cesium.Cartesian3() |
| | | ); |
| | | Cesium.Cartesian3.normalize(directionLocal, directionLocal); |
| | | return Math.asin(directionLocal.z); // z轴向上 |
| | | }, |
| | | DealVisualCone(data,node){ |
| | | this.rowData = data |
| | | console.log(data) |
| | | this.pointGround = { |
| | | lon:data.children[0].longitude, |
| | | lat:data.children[0].latitude, |
| | | height:data.children[0].height |
| | | } |
| | | this.pointFly = { |
| | | lon:data.longitude, |
| | | lat:data.latitude, |
| | | height:data.height |
| | | } |
| | | if(data.children && data.children?.length > 0) { |
| | | preVideoScopePrimitiveArrTie.map((item)=>{ |
| | | if(item.name != data.children[0].label){ |
| | | item.primitive.show = false |
| | | }else{ |
| | | item.primitive.show = true |
| | | } |
| | | }) |
| | | }else { |
| | | preVideoScopePrimitiveArrTie.map((item)=>{ |
| | | if(item.name != data.label){ |
| | | item.primitive.show = false |
| | | }else { |
| | | item.primitive.show = true |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | #cesiumContainer { |
| | | margin: 0; |
| | | padding: 0; |
| | | width: 73%; |
| | | width: 74%; |
| | | height: calc(100vh - 205px); |
| | | } |
| | | #cesiumCamera { |
| | |
| | | /* padding: 0 5px; */ |
| | | margin-top: 10px; |
| | | right: 0px; |
| | | width: 420px; |
| | | width: 410px; |
| | | height: calc(100vh - 210px); |
| | | bottom: 30px; |
| | | margin: 0; |
| | |
| | | } |
| | | .moveResult{position:absolute;z-index:2;background-color:rgba(47,53,60,1);padding:0 5px;right:50%;bottom:30px; |
| | | border:1px solid rgba(255,255,255,.1);box-sizing:content-box;width:220px;height:30px;font-size:14px;text-align:center} |
| | | .cammoveResult{position:absolute;z-index:2;background-color:rgba(47,53,60,1);padding:0 5px;right:calc(50% - 40px);bottom:30px; |
| | | .cammoveResult{position:absolute;z-index:2;background-color:rgba(47,53,60,1);padding:0 5px;right:calc(50% - 140px);bottom:35px; |
| | | border:1px solid rgba(255,255,255,.1);box-sizing:content-box;width:400px;height:30px;font-size:14px;text-align:center} |
| | | .moveResultCon{margin-top:4px} |
| | | .cammoveResultCon{margin-top:4px;color: white;} |
| | |
| | | /* 左下角倍率标签 */ |
| | | .zoom-info { |
| | | position: absolute; |
| | | bottom: 20px; |
| | | left: 20px; |
| | | bottom: 35px; |
| | | left: 340px; |
| | | } |
| | | |
| | | </style> |