首页 / 浏览问题 / 三维GIS / 问题详情
如何给实体单独绑定事件
14EXP 2023年11月14日
使用产品:超图cesium

问题描述: new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)一般事件监听是给canvas加的。如何给标牌添加点击事件或者给3dtiles的模型单独添加事件,

2 个回答

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(
function (movement) {
var pick = scene.pick(movement.endPosition);
if (Cesium.defined(pick) && Cesium.defined(pick.node) && Cehack.mesh)) {
console.log('node: ' + pick.node.name + '. mesh: ' + pick.mesh.name);
}
},
Cesium.ScreenSpaceEventType.MOUSE_MOVE
);

这个是gltf模型的鼠标单击事件的demo, 代码可以在控制台输出鼠标所在位置对应的gltf模型中的节点和三角网信息。
4,151EXP 2023年11月14日
new Cesium.ScreenSpaceEventHandler(scene.canvas); 这种写法只要鼠标移动就会触发,我想要一种只在模型中触发可以做到吗
您好,您可以使用new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)注册鼠标左键点击事件,当点击触发选中后,再通过 viewer.selectedEntity 来判断选择的对象;当鼠标左键点击到entity时,viewer.selectedEntity 会输出选中 entity 的属性,当选中模型对象时,会输出模型对象属性,根据不同类型的模型以及他们的属性字段来判断选中的是哪一类对象
852EXP 2023年11月14日
new Cesium.ScreenSpaceEventHandler(scene.canvas); 这种写法只要鼠标移动就会触发,我想要一种只在模型中触发可以做到吗
模型对象上没有这个方法,您可以在以上方法中进行判断,筛选出目标数据
...