• 学习【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)

    执行效果:

     

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

     

     

  • 相关阅读:
    Flask 学习-81.Flask-RESTX使用reqparse 解析器去掉值为None的参数
    Spring源码系列:初探底层,手写Spring
    【Pandas数据处理100例】(三十四):Pandas提取含有给定字符串的行数据contains()
    百趣代谢组学文献分享:代谢组学中复溶溶剂究竟如何选?
    2023校招C++开发oppo笔试
    【机器学习300问】38、什么是K-means算法?
    港联证券:“保险+期货”快速落地生花 涉及品种累计达18个
    SAP UI5 视图里的 OverflowToolbar 控件
    【附源码】计算机毕业设计SSM网络求职招聘系统
    git工作常用命令
  • 原文地址:https://blog.csdn.net/New_Wang/article/details/126877602