首页 / 浏览问题 / 三维GIS / 问题详情
在三维场景中绘制一个贴倾斜模型的面,点击面周围以外的地方,仍然能选中该面
7EXP 2024年04月08日

在三维场景中绘制一个贴倾斜模型的面,点击面周围以外的地方(图片中红色框附近),仍然能选中该面

点击事件写法如下

function addleftclick(){
        let hbhandler = new Cesium.ScreenSpaceEventHandler(
          viewer.scene.canvas
        );
        hbhandler.setInputAction(function (event) {
          console.log(event)
          let position = viewer.scene.pickPosition(event.position);
          clickPosition = position;
          if (!position) {
            return;
          }
          var pickedFeature = viewer.scene.pick(event.position,0,0);
          var pickedFeatures = viewer.scene.drillPick(event.position,5,1,1);
          var pickfeat = viewer.scene.pick(position,0,0);
          var pickfeats = viewer.scene.drillPick(position,5,1,1);
          console.log(pickedFeature,11)
          console.log(pickedFeatures,22);
          console.log(pickfeat,33)
          console.log(pickfeats,44)
          console.log(pickedFeature.id.layerName,55);

          if (Cesium.defined(position)) {
            let cartographic = Cesium.Cartographic.fromCartesian(position); //根据笛卡尔坐标获取到弧度
            let lat = Cesium.Math.toDegrees(cartographic.latitude);
            let lng = Cesium.Math.toDegrees(cartographic.longitude);
            let height = cartographic.height;
          }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
      }

1个回答

您好,您点击其他位置时pickedfeature内容和点击面时的输出内容是一致的吗?点击其他位置面也会高亮显示吗?
745EXP 2024年04月08日

点击面以外一段距离内的其他位置和点击面的输出内容是一致的;没有做高亮;

和这个问题是类似的

https://ask.supermap.com/78305?show=78305#q78305

Cesium 的 scene.pick 方法会返回与指定位置最接近的对象。因此,即使在点击位置下方没有其他几何体时,scene.pick 方法仍然会返回与矩形最接近的对象,即您绘制的矩形对象。

解决这个问题的方法是在处理返回的对象之前进行进一步的检查,以确定它是否是您期望的对象。您可以检查返回的对象的类型、属性等来确认是否是您绘制的矩形对象。如果不是,则可以继续寻找或忽略它。

理解错了,现在不是要寻找这个对象。比方我想实现点击亮显功能,结果现在点击面以外的地方,仍然会选中这个面。

还有,我测试了cesium官网最新版本的示例,没有这种情况。
您现在使用的版本是哪个呢?是官网最新的吗
我在官网上一个示例里面测试了同样代码,出现了一样的问题
我这边测试了,确实在倾斜中矢量面贴对象会出现这种情况,需要和研发沟通下,请见谅
...