Cesium之事件系统ScreenSpaceEventHandler

204 阅读1分钟

实例化、注册事件、注销事件

// 实例化ScreenSpaceEventHandler
var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);

let eventType = Cesium.ScreenSpaceEventType.LEFT_CLICK;

//注册事件
handler.setInputAction((event) => {
    console.log(event);
}, eventType);

//注销事件
handler.removeInputAction(eventType);

常用事件

事件类型含义
LEFT_CLICK鼠标左键单击
LEFT_UP鼠标左键弹起
LEFT_DOWN鼠标左键按下
LEFT_DOUBLE_CLICK鼠标左键双击
RIGHT_CLICK鼠标左键点击
RIGHT_UP鼠标右键弹起
RIGHT_DOWN鼠标右键按下
MOUSE_MOVE鼠标移动

要素拾取

假如应用场景是点击要素获取其属性信息,这个时候就需要在鼠标左键的注册事件中获取 event 结果,核心代码如下

var picked = viewer.scene.pick(event.position);
# 这个时候就可以根据获取到的对象类型进行操作了。
if (Cesium.defined(picked)) {
    if (picked.id && picked.id instanceof Cesium.Entity) {
        console.log("选中了Entity");
    }
    if (picked.primitive instanceof Cesium.Primitive) {
        console.log("选中了Primitive");
    }
    if (picked.primitive instanceof Cesium.Model) {
        console.log("选中了模型");
    }
    if (picked instanceof Cesium.Cesium3DTileFeature) {
        console.log("选中了3DTile");
    }
}