学习【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数字表示触摸表面上两指事件的变化。

 代码示例:

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

 执行效果,如下:

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

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

 添加多边形并添加描述:

const position2 = new Cesium.Cartesian3.fromDegrees(114.21, 30.55, 0)
// 面
const entityC = this.viewer.entities.add({
    id: 'entityC',
    position: position2,
    plane: {
    plane: new Cesium.Plane(Cesium.Cartesian3.UNIT_Z, 5.0),
    dimensions: new Cesium.Cartesian2(400, 400),
    material: Cesium.Color.BURLYWOOD,
    outline: true,
    outlineWidth: 10,
    outlineColor: Cesium.Color.BROWN,
    show: true
    },
    description: `<div>
        <p>这是一个简单的信息</p>
    </div>`
})

 添加点击事件

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

执行效果:

 

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

 

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

New_Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值