首页 / 浏览问题 / 三维GIS / 问题详情
webgl图层属性查询事件和鼠标单击事件,触发冲突
106EXP 2020年07月17日

使用产品:iserver 10i

问题描述:三维场景,加载倾斜摄影缓存并实现动态单体化,倾斜摄影上存在模型缓存图层。倾斜摄影单体化通过Cesium.ScreenSpaceEventHandler注册鼠标LEFT_CLICK事件获取position,模型图层通过viewer.pickEvent.addEventListener,获取所点击模型的属性信息。但当点击模型时,两个事件都会执行,导致冲突,即点击模型图层时动态单体化方法也会执行。请问有没有办法,解决二者冲突,在点击模型图层时不再触发ScreenSpaceEventHandler事件?谢谢!

图片:

2 个回答

您好,您现在的情况是动态单体化需要监听鼠标点击在屏幕上的位置从而进行单体化,但是同时您还在别的位置有模型,点击模型的时候想实现别的功能比如查询模型数据信息。但是遇到的问题是点击模型 (pickEvent) 时,不但获取了模型本身还会触发ScreenSpaceEventHandler,而您不希望后者发生?不知道我理解的是否准确。

是否可以判断在触发ScreenSpaceEventHandler后,pickEvent有没有获取到feature,从而判断点击的是模型还是倾斜,然后分别进行处理?
jjz
4,720EXP 2020年07月17日
您的理解是对的,但是因为模型缓存图层是在地块上面的,也就是在osgb单体化的二维面上的,所以获取属性信息的同时,鼠标点击事件也一定会获取到二维面的feature数据,所以产生了冲突

您的意思是,倾斜的矢量面和模型在空间上是重叠的所以两个都会同时返回feature?实在不行您试试可不可以判断选择的图层,如果是倾斜图层就获取矢量面,如果是模型图层就获取模型数据;或者在触发pickEvent后,判断两个feature不一样的字段名进行分别操作。

您好,请问您解决了吗,我也遇到了,请问您是怎么解决的
22EXP 2020年08月13日
...