首页 / 浏览问题 / 三维GIS / 问题详情
清除鼠标绑定事件
141EXP 2018年07月04日
在工具栏中定义了很多工具,如测距、量高、面积、可视域分析、阴影分析,假如操作时本来想阴影分析的,误点到了可视域分析,然后又点了个阴影分析,这个时候在地图上点击会出现通视域分析的效果。

我想在每次点击一个工具的时候要清理掉其他鼠标绑定事件(如Cesium.ScreenSpaceEventHandler(scene.canvas))和其他工具创建的功能(如阴影分析创建的Cesium.ShadowQueryPoints();),有什么方法可以直接清空么?需要怎么写这类方法?

1个回答

ScreenSpaceEventHandler.destroy() 或者ScreenSpaceEventHandler.removeInputAction
5,985EXP 2018年07月04日

您好,您这ScreenSpaceEventHandler指的是抽象类吧?不能直接使用destroy方法,需要找到制定的handler执行这个方法吧?所以这个方法不能通用,有多少个handler就要执行多少次destroy是不是?

ps:你们快下班了,今天快结束了crying

咋不通用啊,你注册事件时候 var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
比如要移除移动事件时直接handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
我没有表达清楚,想说的是这样还得找存在多少个handler,因为不知道系统中有多少个handler没有消除,所以需要把所有可能的handler都destroy一下。统一清理的思路是:写一个方法,方法里把自己所有定义过的handler都消除,然后在每次调用工具最开始都调用一下该方法?
这样可以

早上好,刚刚在超图地球中http://www.supermapol.com/earth/发现,对于分析中的通视、可视域、阴影功能,每次切换都可以实现对之前点击功能的清理。但是如果点击了可视域,再选择测量中的面积测量,则会同时触发两种工具。

想问一下 可视域、视屏投放生成的效果怎么清除掉

这个方案是最佳方案吗?超图地球是怎么处理的啊?
我们这个开源了,你自己研究一下?https://github.com/SuperMap/SuperMap-iEarth
好的,谢谢~
...