首页 / 浏览问题 / WebGIS / 问题详情
iClient3D for cesium中,如何通过点击获取点击处的标绘对象
8EXP 2025年12月19日
try {

  let pickResult = viewer.scene.pick(event.position);
  const ray = viewerInstance.camera.getPickRay(event.position);
  const cartesian = viewer.scene.globe.pick(ray, viewerInstance.scene);

  if (cartesian) {
    const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
    result.coordinate = {
      lng: Cesium.Math.toDegrees(cartographic.longitude),
      lat: Cesium.Math.toDegrees(cartographic.latitude),
      height: cartographic.height
    };
  }

  if (pickResult) {
    if (pickResult instanceof Cesium.Cesium3DTilesFeature) {
      result.targetFeature = {
        type: '3dModel',
        id: pickResult.id,
        properties: pickResult.properties,
        primitive: pickResult
      };
    } else if (pickResult.id && pickResult.id instanceof Cesium.Entity) {
      const entity = pickResult.id;
      result.targetFeature = {
        type: entity.__type || (entity.billboard ? 'billboard' : entity.polygon ? 'polygon' : 'entity'),
        id: entity.id,
        primitive: entity
      };
    }
    ....
  }

这是注册cesium鼠标左键点击的事件实现,现在希望通过点击获取点击处的标绘对象,pickResult为空对象。当然可以通过设置标绘的编辑组件和标绘图层实现底层点击选中来判单,但在我的场景中不允许标绘可编辑。。。请问有啥办法知道点击处是否命中标绘对象

...