首页 / 浏览问题 / 三维GIS / 问题详情
独立事件监听,scene.pick失效
3EXP 2021年06月16日
let handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
let handler2 = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function (movement) {
  let mousePosition = movement.position;
  let pickedObjects = scene.drillPick(mousePosition);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
handler2.setInputAction(function (movement) {
  let mousePosition = movement.position;
   //后绑定的,如果使用pick就拿不到任何信息,如果使用和handler中一样的drillPick()就可以拿到对象
  let pickedObjects = scene.pick(mousePosition);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

请问这是为什么?

我使用的是最新版本的supermap webgl

1个回答

您好,我看了一下原生Cesium也是这样,不太明白为什么要写两个left_click事件,一个不行吗?
6,087EXP 2021年06月17日
1、请问你用的原生Cesium版本是多少?我用1.81就不存在我描述的这个问题

2、把所有left_click事件放到一个处理回调中,当然可以。

只是如果supermap要求必须这样做,请说明!

不是2个left_click事件,而是2个独立的事件监听

我觉得写2个事件监听,没到让人不可思议的地步吧。
用原生1.67的试下,目前WebGL使用的是Cesium1.67,如果没有问题的话请提供完整demo
已提供所有相关代码,你写demo验证了吗?

已验证。      

为了独立封装及自定义样式,绘制线、面有不同的提示、样式。今天把cesium封装好的往超图里一用,难顶,整半天感觉问题出在viewer渲染上,以传参的形式调用的viewer pickPosition返回的结果是undefined。躺了,都用超图了,还在意啥好不好看,出来就成了。
...