我搜索了很多,以找到在Cesium中删除事件侦听器的正确方法。我相信我的困惑在于是否将铯事件视为常规dom事件(由于缺乏javascript中关于事件的一般知识(。我正在创建一个屏幕空间事件,如下所示:
var handler = new Cesium.ScreenSpaceEventHandler(canvas);
handler.setInputAction(function (movement) {
var picked = scene.pick(movement.endPosition);
if (Cesium.defined(picked) && picked.id === someEntity) {
labelEntity.position = someEntity.position;
labelEntity.label.show = true;
} else {
labelEntity.label.show = false;
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
我的问题是,如何删除此事件?handler.destroy()
是删除所有与处理程序关联的事件侦听器,还是我必须通过指向铯映射dom元素并在其上调用removeEventListener
来删除事件侦听器?如果是这种情况,应该向removeEventListener
传递哪些参数?
removeInputAction
的参数只是type
和可选的modifer
,并且看起来您没有使用修饰符(SHIFT键、ALT键等(
因此,对于您在上面发布的代码,删除将是:
handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);