• 学习【Cesium】第九篇,鼠标交互和数据查询(学不会揍我)


    这篇主要是学习鼠标交互和数据查询,那么这里有必要搞清楚Cesium空间事件类型有哪些才能进行下一步查询操作,话不多说,上图:

    文档中查找 ScreenSpaceEventType 对象

    文档对于事件类型已经做了列表,我这边画蛇添足😀补充一个中文对照表:

    事件名称类型描述
    LEFT_DOWN数字表示鼠标左键按下事件。
    LEFT_UP数字表示鼠标左键向上事件。
    LEFT_CLICK数字表示鼠标左键单击事件。
    LEFT_DOUBLE_CLICK数字表示鼠标左键双击事件。
    RIGHT_DOWN数字表示鼠标左键按下事件。
    RIGHT_UP数字表示鼠标右键向上事件。
    RIGHT_CLICK数字表示鼠标右键单击事件。
    MIDDLE_DOWN数字表示鼠标中键按下事件。
    MIDDLE_UP数字表示鼠标中键向上事件。
    MIDDLE_CLICK数字表示鼠标中键单击事​​件。
    MOUSE_MOVE数字表示鼠标移动事件。
    WHEEL数字表示鼠标滚轮事件。
    PINCH_START数字表示触摸表面上的两指事件的开始。
    PINCH_END数字表示触摸表面上的两指事件的结束。
    PINCH_MOVE数字表示触摸表面上两指事件的变化。

     代码示例:

    1. // 添加鼠标左键点击事件
    2. const handler = new Cesium.ScreenSpaceEventHandler(this.viewer.cavans)
    3. handler.setInputAction(e => {
    4. console.info('e:', e)
    5. }, Cesium.ScreenSpaceEventType.LEFT_CLICK)

     执行效果,如下:

    其他事件都是照葫芦画瓢,把事件类型对就行。
     

    以上点击,只是实现了屏幕坐标的信息打印,我们在项目处理过程中,经常会在屏幕坐标和空间坐标进行互转,业务场景大概是:我加载了模型,点击模型想要获取模型的属性信息,如何操作呢?接下来,还是上代码说明:

     添加多边形并添加描述:

    1. const position2 = new Cesium.Cartesian3.fromDegrees(114.21, 30.55, 0)
    2. // 面
    3. const entityC = this.viewer.entities.add({
    4. id: 'entityC',
    5. position: position2,
    6. plane: {
    7. plane: new Cesium.Plane(Cesium.Cartesian3.UNIT_Z, 5.0),
    8. dimensions: new Cesium.Cartesian2(400, 400),
    9. material: Cesium.Color.BURLYWOOD,
    10. outline: true,
    11. outlineWidth: 10,
    12. outlineColor: Cesium.Color.BROWN,
    13. show: true
    14. },
    15. description: `
    16. 这是一个简单的信息

    17. `
  • })
  •  添加点击事件

    1. // 添加鼠标左键点击事件
    2. const handler = new Cesium.ScreenSpaceEventHandler(this.viewer.cavans)
    3. handler.setInputAction(e => {
    4. console.info('e:', e)
    5. const pick = this.viewer.scene.pick(e.position)
    6. if (Cesium.defined(pick)) {
    7. console.info('pick:', pick.id.id)
    8. }
    9. }, Cesium.ScreenSpaceEventType.LEFT_CLICK)

    执行效果:

     

    如果以上弹窗没有出现,请检查信息盒子是否打开,看下图:

     

     

  • 相关阅读:
    算法设计与分析 SCAU17088 分治法求众数(优先做)
    Ubuntu设置允许root用户登录
    【附源码】计算机毕业设计JAVA家政服务网站
    java毕业设计汽车租赁系统Mybatis+系统+数据库+调试部署
    索尼cfa卡格式化了怎么恢复数据?这2种方法请收好
    【mac】如何在Mac系统Dock栏中插入空格/半透明隐藏应用程序
    使用 FAT12 文件系统实现简单的 Boot 加载 Loader 到内存
    Pair和Triple的最佳实践
    【分享】如何使用集简云的“数组拆分“ 功能
    背包问题讨论
  • 原文地址:https://blog.csdn.net/New_Wang/article/details/126877602