news 2026/5/1 9:44:04

Cesium 处理屏幕空间事件(鼠标点击、移动、滚轮)的示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cesium 处理屏幕空间事件(鼠标点击、移动、滚轮)的示例
  • 鼠标点击事件通过LEFT_CLICK类型监听,使用drillPick方法获取点击的对象并打印其名称。
  • 鼠标移动事件通过MOUSE_MOVE类型监听,使用pickEllipsoid方法获取鼠标位置对应的经纬度并打印。
  • 鼠标滚轮事件通过WHEEL类型监听,通过调整相机的高度来实现缩放效果。
const viewerDivRef = ref<HTMLDivElement>() // 初始化Cesium Viewer viewer = new Cesium.Viewer(cesiumContainer.value, { timeline: true, animation: true, shouldAnimate: true, homeButton: false, // 是否显示Home按钮 fullscreenButton: false, // 是否显示全屏按钮 baseLayerPicker: true, // 是否显示图层选择控件 geocoder: false, // 是否显示地名查找控件 sceneModePicker: false, // 是否显示投影方式控件 navigationHelpButton: false, // 是否显示帮助信息控件 infoBox: false, // 是否显示点击要素之后显示的信息 requestRenderMode: true, // 启用请求渲染模式 scene3DOnly: false, // 每个几何实例将只能以3D渲染以节省GPU内存 sceneMode: 3, // 初始场景模式 1 2D模式 2 2D循环模式 3 3D模式 Cesium.SceneMode }); // 鼠标点击事件 viewer.screenSpaceEventHandler.setInputAction((movement) => { const pickedObjects = viewer.scene.drillPick(movement.position); if (pickedObjects.length > 0) { const pickedObject = pickedObjects[0]; console.log('点击了:', pickedObject.name); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); // 鼠标移动事件 viewer.screenSpaceEventHandler.setInputAction((movement) => { const cartesian = viewer.camera.pickEllipsoid(movement.endPosition, viewer.scene.globe.ellipsoid); if (cartesian) { const cartographic = Cesium.Cartographic.fromCartesian(cartesian); const longitude = Cesium.Math.toDegrees(cartographic.longitude); const latitude = Cesium.Math.toDegrees(cartographic.latitude); console.log('鼠标移动到经纬度:', longitude, latitude); } }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); // 鼠标滚轮事件 viewer.screenSpaceEventHandler.setInputAction((wheel) => { const camera = viewer.camera; const distance = camera.positionCartographic.height; const newDistance = distance * (1 - wheel.delta * 0.1); camera.setView({ destination: Cesium.Cartesian3.fromRadians(camera.positionCartographic.longitude, camera.positionCartographic.latitude, newDistance) }); }, Cesium.ScreenSpaceEventType.WHEEL); // 强制刷新场景 try { if (viewer && viewer.scene) { viewer.scene.requestRender() setTimeout(() => { if (viewer && viewer.scene) { viewer.scene.requestRender() } }, 0) } } catch (e) { console.warn('刷新场景时出错:', e) } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:38:48

django-flask基于python的大学校园失物招领平台的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着高校规模的扩大和师生人数的增加&#xff0c;校园内物品遗失现象频发&#xff0c;传统的线下失物招领方式效率低下…

作者头像 李华
网站建设 2026/5/1 8:33:14

django-flask基于python的高校篮球球员训练管理系统的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着高校体育事业的快速发展&#xff0c;篮球运动作为一项重要的体育项目&#xff0c;其训练管理逐渐趋向信息化与智能…

作者头像 李华
网站建设 2026/5/1 9:41:36

基于企业数据构建可扩展AI:Nemotron RAG与SQL Server 2025整合架构解析

在某中心Ignite 2025大会上&#xff0c;某中心SQL Server 2025的发布标志着企业级AI就绪数据库愿景的实现&#xff0c;为开发者提供了内置向量搜索和用于调用外部AI模型的SQL原生API等强大新工具。某机构已与某中心合作&#xff0c;将SQL Server 2025与某机构Nemotron RAG开源模…

作者头像 李华
网站建设 2026/5/1 9:37:43

Java主流连接池详解:特性、优缺点与适用场景

在Java应用开发中&#xff0c;数据库连接是稀缺资源。频繁创建和关闭连接会导致大量系统开销&#xff0c;降低应用性能。连接池技术通过预先创建一定数量的数据库连接并复用&#xff0c;有效解决了这一问题。本文将详细介绍Java生态中主流的数据库连接池&#xff0c;包括C3P0、…

作者头像 李华
网站建设 2026/4/8 11:46:44

提升小红书转化率的关键:用对聚合系统,回复快人一步

做小红书多号运营的都知道&#xff0c;要反复切换登录回消息&#xff0c;为了赶粉丝活跃高峰&#xff0c;半夜定闹钟爬起来发笔记&#xff0c;第二天顶着黑眼圈上班&#xff1b;更怕深夜有客户问价格、问购买方式&#xff0c;没及时回复就丢了订单……直到小红书聚合管理系统的…

作者头像 李华
网站建设 2026/5/1 9:17:09

Java版LeetCode热题100之反转链表:从迭代到递归的全面解析

Java版LeetCode热题100之反转链表&#xff1a;从迭代到递归的全面解析 本文深入剖析 LeetCode 第206题「反转链表」&#xff0c;作为后端开发面试的高频必考题&#xff0c;我们将从基础概念到高级技巧&#xff0c;从代码实现到实际应用&#xff0c;全方位掌握这一经典算法。无论…

作者头像 李华