news 2026/3/10 18:49:54

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/3/4 2:36:04

django-flask基于python的高校奖助学金申请管理系统

目录高校奖助学金申请管理系统摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;高校奖助学金申请管理系统摘要 该系统基于Python语言&#xff0c;采用Django和Flask框架开发&…

作者头像 李华
网站建设 2026/3/10 17:14:31

鸿蒙应用的未来发展趋势与前沿技术探索

&#x1f31f; 鸿蒙应用的未来发展趋势与前沿技术探索 一、章节概述 ✅ 学习目标 理解鸿蒙应用开发的未来发展趋势&#xff08;全场景体验、轻量化开发、AI原生应用、云原生部署、安全可信&#xff09;探索鸿蒙前沿技术&#xff08;元宇宙应用、量子计算、脑机接口、5G/6G通信、…

作者头像 李华
网站建设 2026/3/10 5:07:28

django-flask基于python的高校教材征订系统的设计与实现

目录 高校教材征订系统的设计与实现 关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 高校教材征订系统的设计与实现 基于Python的Django和Flask框架&#xff0c;设计并实现了一套高…

作者头像 李华
网站建设 2026/3/4 8:27:58

2026年38款人性化设计项目管理软件,使用感超舒适惬意

作为常年周旋于多项目统筹、跨团队协作的资深项目经理&#xff0c;你是否也曾因软件界面繁琐、操作逻辑晦涩、学习成本过高而倍感疲惫&#xff1f;在追求高效办公的当下&#xff0c;项目管理软件的“人性化设计”已成为核心竞争力——它不仅是工具&#xff0c;更是提升团队幸福…

作者头像 李华
网站建设 2026/3/4 6:26:01

Java版LeetCode热题100之环形链表:从哈希表到Floyd判圈算法的深度解析

Java版LeetCode热题100之环形链表&#xff1a;从哈希表到Floyd判圈算法的深度解析 本文全面剖析 LeetCode 第141题「环形链表」&#xff0c;作为面试必考的经典问题&#xff0c;我们将深入探讨两种核心解法&#xff0c;并重点掌握O(1)空间复杂度的Floyd判圈算法。无论你是算法新…

作者头像 李华
网站建设 2026/3/4 1:01:05

互联网大厂Java求职面试实战:核心技术与业务场景深度解析

互联网大厂Java求职面试实战&#xff1a;核心技术与业务场景深度解析 本文通过互联网大厂Java求职面试的真实场景&#xff0c;以严肃面试官与搞笑程序员谢飞机的对话形式&#xff0c;涵盖Java核心技术栈和多业务场景&#xff0c;帮助读者系统掌握技术要点。场景背景 在一家知名…

作者头像 李华