vue 2.x+webpack+cesium1.64详解(7):cesium事件详解

news2024/11/15 14:09:28

目录

cesium事件详解

一、屏幕空间事件处理程序(Screen Space Event Handler)

1.1、 屏幕空间事件类型:(ScreenSpaceEventType)鼠标事件

2.1、键盘修饰符类型(KeyboardEventModifier)

 二、屏幕空间相机控制器(Screen Space Camera Controller)

2.1、相机事件

2.1.1 类型

 2.1.2 默认操作模式

 2.1.3 修改默认操作模式

三、场景触发事件


cesium事件详解

Cesium中的事件大体分为三种,即屏幕空间事件处理程序,屏幕空间相机控制器,场景触发事件,也可以概况的通俗说鼠标事件相机事件键盘事件场景触发事件

一、屏幕空间事件处理程序(Screen Space Event Handler)

我们常说的鼠标事件或键盘事件。

使用大致流程:使用时,我们需要先对 ScreenSpaceEventHandler 类进行实例化,再注册事件或注销事件

1.1、 屏幕空间事件类型:(ScreenSpaceEventType)鼠标事件

 

定义鼠标事件:

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);

删除事件:

handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);

左键单击事件:

handler.setInputAction(function(click){
    console.log('左键单击事件');     
},Cesium.ScreenSpaceEventType.LEFT_CLICK);

左键双击事件:

handler.setInputAction(function(click){
    console.log('左键双击事件');     
},Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

左键按下事件:

handler.setInputAction(function(click){
    console.log('左键按下事件');     
},Cesium.ScreenSpaceEventType.LEFT_DOWN);

左键弹起事件:

handler.setInputAction(function(click){
    console.log('左键弹起事件');     
},Cesium.ScreenSpaceEventType.LEFT_UP);

中键单击事​​件:

handler.setInputAction(function(click){
      console.log('中键单击事​​件');     
 },Cesium.ScreenSpaceEventType.MIDDLE_CLICK);

中键按下事件:

handler.setInputAction(function(click){
      console.log('中键按下事件');     
},Cesium.ScreenSpaceEventType.MIDDLE_DOWN);

中键弹起事件:

handler.setInputAction(function(click){
    console.log('中键弹起事件');     
},Cesium.ScreenSpaceEventType.MIDDLE_UP);

移动事件:

handler.setInputAction(function(movement){
    console.log('移动事件');     
},Cesium.ScreenSpaceEventType.MOUSE_MOVE);

右键单击事件 :

handler.setInputAction(function(click){
    console.log('右键单击事件');     
},Cesium.ScreenSpaceEventType.RIGHT_CLICK);

右键按下事件:

handler.setInputAction(function(click){
    console.log('右键按下事件');     
},Cesium.ScreenSpaceEventType.RIGHT_DOWN);

右键弹起事件:

handler.setInputAction(function(click){
    console.log('右键弹起事件');     
},Cesium.ScreenSpaceEventType.RIGHT_UP);

滚轮事件:

handler.setInputAction(function(wheelment){
    console.log('滚轮事件');     
},Cesium.ScreenSpaceEventType.WHEEL);

2.1、键盘修饰符类型(KeyboardEventModifier)


 使用:

// 绑定屏幕空间事件
let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(event){
    console.log('shift + 左键单击', event.position);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK, Cesium.KeyboardEventModifier.SHIFT);
// 移除屏幕空间事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK, Cesium.KeyboardEventModifier.SHIFT);

 二、屏幕空间相机控制器(Screen Space Camera Controller)

根据在画布上的鼠标输入修改摄像机的位置和方向。可以理解为我们常说的相机事件,是与相机控制相关的事件处理程序。
Cesium在 Viewer 类的实例化过程中,也实例化了其他很多类,其中就包括 ScreenSpaceCameraController 类,并把实例化结果赋给了 viewer.scene.screenSpaceCameraController ,所以我们在使用时可以直接操作 viewer.scene.screenSpaceCameraController 。
另外,我们可以更改默认操作模式。
 

2.1、相机事件

2.1.1 类型

 2.1.2 默认操作模式

 2.1.3 修改默认操作模式

如果需要改变默认操作模式,可以在初始化地球之后,通过改变 ScreenSpaceCameraController 的几个属性来实现。

 

viewer.scene.screenSpaceCameraController.tiltEventTypes = [
    Cesium.CameraEventType.RIGHT_DRAG,
    Cesium.CameraEventType.PINCH,
    {
        eventType: Cesium.CameraEventType.LEFT_DRAG,
        modifier: Cesium.KeyboardEventModifier.CTRL,
    },
    {
        eventType: Cesium.CameraEventType.RIGHT_DRAG,
        modifier: Cesium.KeyboardEventModifier.CTRL,
    },
];
viewer.scene.screenSpaceCameraController.zoomEventTypes = [
    Cesium.CameraEventType.MIDDLE_DRAG,
    Cesium.CameraEventType.WHEEL,
    Cesium.CameraEventType.PINCH,
];

三、场景触发事件

场景中一些变化触发的监听事件,随着Cesium中一些对象实例化而产生的事件。
常用的场景触发事件有:

  • Camera.changed:相机发生变化时触发
  • Camera.moveEnd:相机停止移动时触发
  • Camera.moveStart:相机开始移动时触发
  • Scene.preUpdate:场景更新之前触发
  • Scene.postUpdate:场景更新之后立即触发
  • Scene.preRender:场景更新之后渲染之前触发
  • Scene.postRender:场景渲染之后触发
  • Scene.terrainProviderChanged:地形提供器发生变化时触发
  • Viewer.trackedEntityChanged:entity的属性发生变化时触发
  • Cesium3DTileset.allTilesLoaded:所有3dtiles数据加载完成以后触发
  • Cesium3DTileset.loadProgress:3dtiles初始化加载过程中触发
  • Cesium3DTileset.tileFailed:3dtiles瓦片加载失败时触发
  • Globe.imageryLayersUpdatedEvent:地球加载图层更新时触发

使用样例:

// 需要回调的函数 
function callbackFunc(event){
    cosnole.log(event)
}
// 渲染之前执行
viewer.scene.preRender.addEventListener(callbackFunc);
viewer.scene.preRender.removeEventListener(callbackFunc);

// 更新之前执行
viewer.scene.preUpdate.addEventListener(callbackFunc);
viewer.scene.preUpdate.removeEventListener(callbackFunc);

// 实时渲染执行
viewer.scene.postRender.addEventListener(callbackFunc);
viewer.scene.postRender.removeEventListener(callbackFunc);

// 实时更新执行
viewer.scene.postUpdate.addEventListener(callbackFunc);
viewer.scene.postUpdate.removeEventListener(callbackFunc);


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马Hive+Spark离线数仓工业项目-服务器性能监控Prometheus

监控需求及常见工具 目标:了解服务器性能监控需求及常见监控工具 路径 - step1:监控需求 - step2:常见工具 实施 监控需求 - 问题:数据量越来越大,机器数量越来越多,如何保证所有服务器稳定的的运行&a…

【EHub_tx1_tx2_E100】 ROS_ Melodic + Astra S(如何在该环境下打开摄像机获取rgb/深度图/点云)

简介:介绍奥比中光 Astra S 深度相机 在EHub_tx1_tx2_E100载板,TX1核心模块环境(Ubuntu18.04)下测试ROS驱动,打开摄像头RGB图像和查看深度图和点云图,本文的前提条件是你的TX1里已经安装了ROS版本&#xff…

CAN 通信协议

CAN 概述 CAN 是Controller Area Network 的缩写(以下称为CAN),它的设计目标是以最小的CPU负荷来高效处理大量的报文。1986 年德国电气商BOSCH公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化…

Vue 实现拖拽模块(五) - 下 预览元件

上文介绍了 定义元件的触发事件(上) 的简单实现 本文主要介绍了预览元件数据,并根据配置事件去触发逻辑,具体如下: 效果图 实现过程 创建预览页面 (元件配置和预览并不是同一个页面)预览页面使用 localStorage 缓存获取保存的元件数据&…

网络编程看这一篇文章就够了

第一章 网络编程概述 网络编程概述1 2 3Java语言提供了网络的支持,程序员能够很容易的开发常见的网络应用.Java提供的类库,可以实现无痛的网络连接,联网的底层细节被隐藏在安装Java本机系统里.由JVM进行控制.并且Java实现了一个跨平台的网络库.网络编程的目的1直接或间接地通过…

SQL Server注入技巧与提权方式详解

目录 前言 一、SQL Server基础 1. SQL Server 2012安装启动 navicat远程连接 2. SQL Server概念 数据库的组成 数据库中常用对象 默认库介绍 3. T-SQL语言 创建数据库 创建表 插入数据 基础语法总结 4. sqlserver权限 新建用户并赋予权限 权限总结 二、Sqlser…

4.1 集成运算放大电路概述

集成电路以半导体单晶硅为芯片,采用专门的制造工艺,把晶体管、场效应管、二极管、电阻和电容等元件及它们之间的连线所组成的完整电路制作在一起,使之具有特定的功能。集成放大电路最初多用于各种模拟信号的运算(如比例、求和、求…

RabbitMQ 管理界面操作说明

RabbitMQ 管理界面操作说明 当我们安装好RabbitMQ,并开启了rabbitmq_management插件并重启RabbitMQ服务后,我们就可以访问管控台了。 #启动后台管理 [rootVM-0-9-centos sbin]#rabbitmq-plugins enable rabbitmq_management rabbitmq_management开启后&#xff0…

Java流程控制语句-学习笔记

目录 第一章 流程控制语句 1.1 流程控制语句分类 1.2 顺序结构 第二章 判断语句:if语句 2.1 if语句格式1 2.2 if语句格式2 2.3 if语句格式3 第三章 switch语句 3.1 格式 3.2 执行流程: 3.3 switch的扩展知识: 第四章 循环结构 4…

win11+wsl2+kind安装k8s

win11wsl2安装k8s 1. 安装docker w11上面安装docker-desktop的方案,具体的安装步骤: 先开启系统的镜像支持更新wsl设置默认版本为2安装docker-desktop,修改安装位置等,否则就是安装在c盘中 https://blog.csdn.net/weixin_4391…

【机器学习】李宏毅-判断年收入

李宏毅-判断年收入1 实验目的 本次作业的数据是加州大学尔湾分校机器学习作业中下载得到,使用Classification中的生成模型generative model以及logistic regression解决二分类问题。 根据已有数据,判断该人年收入是否大于5万美元,最终得到预…

leetcode 23[python3]几种方法的思考与总结

题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 输入: lists [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1…

⚡️【linux】linux编辑器-VIM的高频使用,快快收藏起来!

⚡️目录 1️⃣VIM最小集 2️⃣VIM指令集 3️⃣VIM的配置 🌲前言:VIM和VI的区别简单点来讲,他们都是多模式编辑器,不同的是VIM是VI的升级版本,它不仅兼容VI的所有指令,而且还有一些新的特征在里面。例如语…

录屏软件哪个好?试试这6款录屏软件,小编亲测(2023已更新)

对于很多小伙伴来说,电脑录屏是经常需要使用的技能。面对网络上眼花缭乱的录屏软件,究竟哪个录屏软件好用呢?录屏软件哪个好?今天,小编分享亲自测试的这6款录屏软件给你,一起来看看吧。 录屏软件1&#xff…

DevSecOps“内置安全保护”,让软件研发“天生健康”

前言 随着DevOps的发展,DevOps大幅提升了企业应用迭代的速度。但同时,安全如果不能跟上步伐,不仅会抵消DevOps变革带来的提升,拖慢企业数字化转型进程,还会导致漏洞与风险不约而至。所以安全能力在全球范围内受到的重…

4款宝藏国产软件,装了就舍不得卸载,白嫖必备

提到国产软件,许多人想到“流氓、捆绑、广告多”,事实上国产良心软件非常多,如下面几款,每一个都功能强大,最重要还免费使用。 1、原本(图片处理神器) 日常生活与工作中,经常需要拍摄…

C++单例模式 : 懒汉模式 与 饿汉模式

单例模式: 只能有一个实例,有懒汉和饿汉区分,实现核心思想: 1.构造函数私有化 2.使用静态函数作为接口来获取类对象 1、懒汉模式: 由调用者实例,多线程情况下会存在线程安全问题,需要加互斥锁进…

寒冬已过,2023抓住IT复苏新机会

随着疫情防控进入新的阶段,2023年经济将逐渐回暖,许多行业也将迎来IT需求复苏的新机会。本期,我们就以互联网,金融和房地产这3个支柱行业近期的实际案例,来说明在在线文档领域的新机会。案例1:某互联网集团A公司&#…

数据结构---二叉树路径问题

二叉树路径问题二叉树所有路径分析JAVA实现力扣提交找到一个和为sum的到达叶子节点的路径分析JAVA实现力扣提交求路径(中间一段)C实现打印根节点到任意节点的路径JAVA实现二叉树所有路径 257二叉树所有路径 分析 前序遍历二叉树递归实现回溯 深度优先搜…

容器化——Centos下部署最后一版支持Docker的k8s集群

部署版本 首先要确定部署的版本 查询Kubernetes对Docker支持的情况 kubernetes/dependencies.yaml at master kubernetes/kubernetes (github.com) 查询Kubernetes Dashboard对Kubernetes支持的情况 Releases kubernetes/dashboard (github.com) 名称版本kubernetes1.23Doc…