/*
* @title:
* @Author: yang shao tang
* @Date: 2023-09-21 10:59:04
* @LastEditors: yang shao tang
* @LastEditTime: 2023-11-22 17:47:33
* @FilePath: \FPYZT1.0\src\utils\pickUp.js
* @Description:
*
*/
import Vue from 'vue';
import store from '@/store';
// 定义一个全局变量handler,用于存储Cesium.ScreenSpaceEventHandler对象
let handler = '';
const vm = new Vue();
export default class pickUp {
constructor() {
// 初始化pickUp类的构造函数,在构造函数中创建ScreenSpaceEventHandler对象并将其赋值给handler
handler = new Cesium.ScreenSpaceEventHandler(earth.czm.viewer.scene.canvas);
// 调用MouseMoveEvent方法,绑定鼠标移动事件
this.MouseMoveEvent();
// 调用EntityPickEvent方法,绑定实体拾取事件
this.EntityPickEvent();
}
/**
* @description: 实体拾取
* @return {*}
*/
EntityPickEvent(callback = (pick) => {}) {
// EntityPickEvent方法用于绑定实体拾取事件,默认提供一个回调函数callback用于处理拾取结果
// 添加LEFT_CLICK事件监听器
this.addEventListener('LEFT_CLICK', (e) => {
let result = {
// 拾取结果类型
type: '',
// 拾取结果数据
data: '',
};
// 使用Cesium.Scene的pick方法进行拾取操作
const pick = earth.czm.viewer.scene.pick(e.position);
// 如果拾取结果为空,则直接返回
if (!Cesium.defined(pick)) {
return;
} else {
if (pick.id && pick.id._bjxtdOwner) {
if (pick.id._bjxtdOwner.customProp === 'initSearch') {
// 修改查询分析中坐标修改第一个点位弹窗
vm.$bus.$emit('updateInfoStatus')
}
}
}
// 拾取结果为实体
result.type = 'Entity';
// 将拾取结果赋值给result.data
result.data = pick;
// 调用回调函数,传递拾取结果
return callback(result);
});
}
/**
* @description: 鼠标移动
* @return {*}
*/
MouseMoveEvent() {
// MouseMoveEvent方法用于绑定鼠标移动事件
this.addEventListener('MOUSE_MOVE', (e) => {
// 获取鼠标移动的位置
const pick = earth.czm.viewer.scene.pick(e.endPosition);
if (!pick || !pick.id || !pick.id.popupType) {
// 如果拾取结果为空,则将鼠标样式设为默认值
document.querySelector('body').style.cursor = 'default';
return;
}
try {
if (Cesium.defined(pick)) {
if (pick.id && pick.id.popupType) {
// 如果拾取结果的id存在popupType属性,则将鼠标样式设为小手样式
document.querySelector('body').style.cursor = 'pointer';
}
} else {
// 如果拾取结果为空,则将鼠标样式设为默认值
document.querySelector('body').style.cursor = 'default';
}
} catch (error) {}
});
}
// WheelMent(){
// this.addEventListener('WHEEL', (e) => {
// viewer.camera.changed.addEventListener(() => {
// cameraAlt = viewer.camera.positionCartographic.height.toFixed(2);
// console.log(cameraAlt);
// });
// });
// }
/**
* 绑定事件
* @param {String} type 事件类型
* @param {Function} fun 事件处理函数
*/
addEventListener(type, fun, modifier) {
// 使用ScreenSpaceEventHandler的setInputAction方法绑定事件处理函数
handler.setInputAction(fun, Cesium.ScreenSpaceEventType[type]);
}
/**
* 删除事件
* @param {String} type 事件类型
*/
removeEventListener(type, modifier) {
// 使用ScreenSpaceEventHandler的removeInputAction方法移除事件处理函数
handler.removeInputAction(Cesium.ScreenSpaceEventType[type]);
}
}
pickUp.js 实体点击事件
最新推荐文章于 2024-07-12 16:27:40 发布