|  | @@ -1,302 +0,0 @@
 | 
	
		
			
				|  |  | -<script setup>
 | 
	
		
			
				|  |  | -	import {
 | 
	
		
			
				|  |  | -		inject
 | 
	
		
			
				|  |  | -	} from "vue";
 | 
	
		
			
				|  |  | -	import html2canvas from 'html2canvas';
 | 
	
		
			
				|  |  | -	import {
 | 
	
		
			
				|  |  | -		blobToBase64,
 | 
	
		
			
				|  |  | -		base64ToBlob
 | 
	
		
			
				|  |  | -	} from '@/assets/js/blobtobase64';
 | 
	
		
			
				|  |  | -	const getMapInstance = inject("getMapInstance");
 | 
	
		
			
				|  |  | -	jt3d = getMapInstance();
 | 
	
		
			
				|  |  | -</script>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<template>
 | 
	
		
			
				|  |  | -	<div class="mainview">
 | 
	
		
			
				|  |  | -		<div class="header">
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -		</div>
 | 
	
		
			
				|  |  | -		<div class="middleviewer">
 | 
	
		
			
				|  |  | -			<div class="viewer" v-for="(res,index) in ImgurlList" :key="index">
 | 
	
		
			
				|  |  | -				<div class="viewertop">
 | 
	
		
			
				|  |  | -					<img :src="res.url" @click="flyto(res.info)">
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -				<div class="viewerbottom">
 | 
	
		
			
				|  |  | -					{{res.name}}
 | 
	
		
			
				|  |  | -					<img src="@/assets/images/delete.png" class="deleteImg" @click="deleteviewer(res,index)" />
 | 
	
		
			
				|  |  | -				</div>
 | 
	
		
			
				|  |  | -			</div>
 | 
	
		
			
				|  |  | -		</div>
 | 
	
		
			
				|  |  | -	</div>
 | 
	
		
			
				|  |  | -</template>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<script>
 | 
	
		
			
				|  |  | -	let jt3d = undefined;
 | 
	
		
			
				|  |  | -	export default {
 | 
	
		
			
				|  |  | -		data() {
 | 
	
		
			
				|  |  | -			return {
 | 
	
		
			
				|  |  | -				// viewersName: '', //视角标签名称
 | 
	
		
			
				|  |  | -				// ImgurlList: [], //截图地址列表
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  | -		methods: {
 | 
	
		
			
				|  |  | -			//获取输入框值
 | 
	
		
			
				|  |  | -			getName() {
 | 
	
		
			
				|  |  | -				this.viewersName = document.getElementById("inputValue").value;
 | 
	
		
			
				|  |  | -			},
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			//跳转方法
 | 
	
		
			
				|  |  | -			flyto(options) {
 | 
	
		
			
				|  |  | -				jt3d.LocateUtil.flyToPoint(options)
 | 
	
		
			
				|  |  | -			},
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			//删除方法,传keyvalue以及需要修改属性
 | 
	
		
			
				|  |  | -			deleteviewer(item, index) {
 | 
	
		
			
				|  |  | -				//删除对应数组内的对象
 | 
	
		
			
				|  |  | -				this.ImgurlList.splice(index, 1)
 | 
	
		
			
				|  |  | -				if (item.id) {
 | 
	
		
			
				|  |  | -					this.$http.get('/delete', {
 | 
	
		
			
				|  |  | -						tableName: 'sys_map_angle',
 | 
	
		
			
				|  |  | -						keyValue: item.id,
 | 
	
		
			
				|  |  | -					}).then(res => {
 | 
	
		
			
				|  |  | -						console.log(res.data)
 | 
	
		
			
				|  |  | -					})
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			},
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			//添加视角标签,当前页存数组,向数据库传入相机参数
 | 
	
		
			
				|  |  | -			addviewer() {
 | 
	
		
			
				|  |  | -				//获取当前界面截图方法
 | 
	
		
			
				|  |  | -				html2canvas(
 | 
	
		
			
				|  |  | -					this.$parent.$parent.$refs.refMap3d.$refs.cesiumContainer, {
 | 
	
		
			
				|  |  | -						// backgroundColor: null, //画出来的图片有白色的边框,不要可设置背景为透明色(null)
 | 
	
		
			
				|  |  | -						useCORS: true, //支持图片跨域
 | 
	
		
			
				|  |  | -						scale: 1 / 8, //设置放大的倍数
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				).then(canvas => {
 | 
	
		
			
				|  |  | -					//截图用img元素承装,显示在页面的上
 | 
	
		
			
				|  |  | -					let url = canvas.toDataURL('image/png')
 | 
	
		
			
				|  |  | -					//经纬度、高度
 | 
	
		
			
				|  |  | -					// 获取 相机姿态信息
 | 
	
		
			
				|  |  | -					let heading = window["viewer"].scene.camera.heading
 | 
	
		
			
				|  |  | -					let pitch = window["viewer"].scene.camera.pitch
 | 
	
		
			
				|  |  | -					let roll = window["viewer"].scene.camera.roll
 | 
	
		
			
				|  |  | -					let position = window["viewer"].scene.camera.positionCartographic
 | 
	
		
			
				|  |  | -					let longitude = Cesium.Math.toDegrees(position.longitude) //y
 | 
	
		
			
				|  |  | -					let latitude = Cesium.Math.toDegrees(position.latitude) //x
 | 
	
		
			
				|  |  | -					let height = position.height
 | 
	
		
			
				|  |  | -					let info = {
 | 
	
		
			
				|  |  | -						latitude: latitude,
 | 
	
		
			
				|  |  | -						longitude: longitude,
 | 
	
		
			
				|  |  | -						height: height,
 | 
	
		
			
				|  |  | -						pitch: Cesium.Math.toDegrees(pitch),
 | 
	
		
			
				|  |  | -						roll: Cesium.Math.toDegrees(roll),
 | 
	
		
			
				|  |  | -						heading: Cesium.Math.toDegrees(heading)
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -					//dom for循环渲染列表
 | 
	
		
			
				|  |  | -					this.ImgurlList.unshift({
 | 
	
		
			
				|  |  | -						url: url,
 | 
	
		
			
				|  |  | -						name: this.viewersName,
 | 
	
		
			
				|  |  | -						info: info
 | 
	
		
			
				|  |  | -					})
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					//base64转换为二进制文件
 | 
	
		
			
				|  |  | -					// let blob = base64ToBlob(url)
 | 
	
		
			
				|  |  | -					// //文件转为文件流
 | 
	
		
			
				|  |  | -					// let formData = new FormData();
 | 
	
		
			
				|  |  | -					// formData.append('file',blob)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					let data = {
 | 
	
		
			
				|  |  | -						name: this.viewersName,
 | 
	
		
			
				|  |  | -						x: latitude,
 | 
	
		
			
				|  |  | -						y: longitude,
 | 
	
		
			
				|  |  | -						z: height,
 | 
	
		
			
				|  |  | -						pitch: Cesium.Math.toDegrees(pitch),
 | 
	
		
			
				|  |  | -						roll: Cesium.Math.toDegrees(roll),
 | 
	
		
			
				|  |  | -						heading: Cesium.Math.toDegrees(heading),
 | 
	
		
			
				|  |  | -						screenshot: url,
 | 
	
		
			
				|  |  | -						userId: this.id,
 | 
	
		
			
				|  |  | -						// id:0
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					//添加数据接口
 | 
	
		
			
				|  |  | -					this.$http.post('/postSubmit', {
 | 
	
		
			
				|  |  | -						tableName: 'sys_map_angle',
 | 
	
		
			
				|  |  | -						keyValue: '',
 | 
	
		
			
				|  |  | -						formData: data,
 | 
	
		
			
				|  |  | -					}).then(res => {
 | 
	
		
			
				|  |  | -						console.log(res)
 | 
	
		
			
				|  |  | -						if (res.success == true) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -					})
 | 
	
		
			
				|  |  | -				}).catch(err => {
 | 
	
		
			
				|  |  | -					console.log(err)
 | 
	
		
			
				|  |  | -				})
 | 
	
		
			
				|  |  | -			},
 | 
	
		
			
				|  |  | -			searchviewer() {
 | 
	
		
			
				|  |  | -				this.info = JSON.parse(localStorage.getItem('person'))
 | 
	
		
			
				|  |  | -				this.id = this.info.id
 | 
	
		
			
				|  |  | -				//获取所有图片数据
 | 
	
		
			
				|  |  | -				this.$http.get('/getTableList', {
 | 
	
		
			
				|  |  | -					tableName: 'sys_map_angle', //
 | 
	
		
			
				|  |  | -					sqlWhere: "name like '%" + this.viewersName + "%'",
 | 
	
		
			
				|  |  | -					orderByField: ''
 | 
	
		
			
				|  |  | -				}).then(res => {
 | 
	
		
			
				|  |  | -					console.log('获取图片', res.data)
 | 
	
		
			
				|  |  | -					this.ImgurlList = [];
 | 
	
		
			
				|  |  | -					res.data.forEach(item => {
 | 
	
		
			
				|  |  | -						let info = {
 | 
	
		
			
				|  |  | -							latitude: item.x,
 | 
	
		
			
				|  |  | -							longitude: item.y,
 | 
	
		
			
				|  |  | -							height: item.z,
 | 
	
		
			
				|  |  | -							pitch: item.pitch,
 | 
	
		
			
				|  |  | -							roll: item.roll,
 | 
	
		
			
				|  |  | -							heading: item.heading
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -						// let url = blobToBase64(item.screenshot)
 | 
	
		
			
				|  |  | -						//dom for循环渲染列表
 | 
	
		
			
				|  |  | -						this.ImgurlList.push({
 | 
	
		
			
				|  |  | -							url: item.screenshot,
 | 
	
		
			
				|  |  | -							name: item.name,
 | 
	
		
			
				|  |  | -							info: info,
 | 
	
		
			
				|  |  | -							id: item.id
 | 
	
		
			
				|  |  | -						})
 | 
	
		
			
				|  |  | -					})
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					// console.log('img列表',this.ImgurlList)
 | 
	
		
			
				|  |  | -				})
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		mounted() {
 | 
	
		
			
				|  |  | -			this.info = JSON.parse(localStorage.getItem('person'))
 | 
	
		
			
				|  |  | -			this.id = this.info.id
 | 
	
		
			
				|  |  | -			//获取所有图片数据
 | 
	
		
			
				|  |  | -			this.$http.get('/getTableList', {
 | 
	
		
			
				|  |  | -				tableName: 'sys_map_angle', //
 | 
	
		
			
				|  |  | -				sqlWhere: '', //+ this.loginForm.id
 | 
	
		
			
				|  |  | -				orderByField: ''
 | 
	
		
			
				|  |  | -			}).then(res => {
 | 
	
		
			
				|  |  | -				console.log('获取图片', res.data)
 | 
	
		
			
				|  |  | -				res.data.forEach(item => {
 | 
	
		
			
				|  |  | -					let info = {
 | 
	
		
			
				|  |  | -						latitude: item.x,
 | 
	
		
			
				|  |  | -						longitude: item.y,
 | 
	
		
			
				|  |  | -						height: item.z,
 | 
	
		
			
				|  |  | -						pitch: item.pitch,
 | 
	
		
			
				|  |  | -						roll: item.roll,
 | 
	
		
			
				|  |  | -						heading: item.heading
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -					// let url = blobToBase64(item.screenshot)
 | 
	
		
			
				|  |  | -					//dom for循环渲染列表
 | 
	
		
			
				|  |  | -					this.ImgurlList.push({
 | 
	
		
			
				|  |  | -						url: item.screenshot,
 | 
	
		
			
				|  |  | -						name: item.name,
 | 
	
		
			
				|  |  | -						info: info,
 | 
	
		
			
				|  |  | -						id: item.id
 | 
	
		
			
				|  |  | -					})
 | 
	
		
			
				|  |  | -				})
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				// console.log('img列表',this.ImgurlList)
 | 
	
		
			
				|  |  | -			})
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -</script>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -<style lang="scss" scoped>
 | 
	
		
			
				|  |  | -	.mainview {
 | 
	
		
			
				|  |  | -		width: 100%;
 | 
	
		
			
				|  |  | -		height: 100%;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.header {
 | 
	
		
			
				|  |  | -			width: 100%;
 | 
	
		
			
				|  |  | -			display: flex;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			input,
 | 
	
		
			
				|  |  | -			input:focus {
 | 
	
		
			
				|  |  | -				outline: none;
 | 
	
		
			
				|  |  | -				width: 185rem !important;
 | 
	
		
			
				|  |  | -				border: 1rem solid rgba(255, 255, 255, 0.8);
 | 
	
		
			
				|  |  | -				margin-right: 10rem;
 | 
	
		
			
				|  |  | -				height: 26rem !important;
 | 
	
		
			
				|  |  | -				color: rgba(255, 255, 255, 1);
 | 
	
		
			
				|  |  | -				background-color: rgba(255, 255, 255, 0) !important;
 | 
	
		
			
				|  |  | -				border-radius: 3rem;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		.middleviewer {
 | 
	
		
			
				|  |  | -			width: 265rem;
 | 
	
		
			
				|  |  | -			height: 100%;
 | 
	
		
			
				|  |  | -			margin-left: 7rem;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			.viewer {
 | 
	
		
			
				|  |  | -				width: 265rem !important;
 | 
	
		
			
				|  |  | -				height: 196rem !important;
 | 
	
		
			
				|  |  | -				margin-top: 15rem;
 | 
	
		
			
				|  |  | -				border: 1rem solid #ffffff !important;
 | 
	
		
			
				|  |  | -				border-radius: 1rem !important;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				.viewertop {
 | 
	
		
			
				|  |  | -					width: 265rem !important;
 | 
	
		
			
				|  |  | -					height: 166rem !important;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					img {
 | 
	
		
			
				|  |  | -						width: 100% !important;
 | 
	
		
			
				|  |  | -						height: 100% !important;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				.viewerbottom {
 | 
	
		
			
				|  |  | -					line-height: 30rem !important;
 | 
	
		
			
				|  |  | -					text-align: center !important;
 | 
	
		
			
				|  |  | -					width: 265rem !important;
 | 
	
		
			
				|  |  | -					height: 30rem !important;
 | 
	
		
			
				|  |  | -					position: relative;
 | 
	
		
			
				|  |  | -					background-color: rgba(15, 145, 185, 0.7);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					.deleteImg {
 | 
	
		
			
				|  |  | -						width: 24rem;
 | 
	
		
			
				|  |  | -						height: 24rem;
 | 
	
		
			
				|  |  | -						right: 5rem;
 | 
	
		
			
				|  |  | -						top: 3rem;
 | 
	
		
			
				|  |  | -						position: absolute;
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	::v-deep .el-input {
 | 
	
		
			
				|  |  | -		flex-grow: 0 !important;
 | 
	
		
			
				|  |  | -		width: 200rem !important;
 | 
	
		
			
				|  |  | -		// display: inline !important;
 | 
	
		
			
				|  |  | -		// margin-left: 5rem;
 | 
	
		
			
				|  |  | -		margin-right: 10rem;
 | 
	
		
			
				|  |  | -		height: 30rem !important;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	//输入框文字颜色
 | 
	
		
			
				|  |  | -	::v-deep .el-input__inner {
 | 
	
		
			
				|  |  | -		color: rgba(255, 255, 255, 1)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	//输入框背景色
 | 
	
		
			
				|  |  | -	::v-deep .el-input__wrapper {
 | 
	
		
			
				|  |  | -		background-color: rgba(255, 255, 255, 0) !important;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	::v-deep .el-button {
 | 
	
		
			
				|  |  | -		border-radius: 3rem !important;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	::v-deep .el-button--primary {
 | 
	
		
			
				|  |  | -		background-color: rgba(64, 158, 255, 0.6) !important;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	::-webkit-scrollbar {
 | 
	
		
			
				|  |  | -		width: 0rem;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -</style>
 |