首页 > 解决方案 > 如何在铯地图上获取点击图标的位置

问题描述

我正在尝试围绕通过单击选择的图标绘制圆圈。我目前的代码是:

this.handler.setInputAction(function(click) {
  var pickedObjects = viewer.scene.drillPick(click.Position);
  if(Cesium.defined(pickedObjects)) {
     if(pickedObjects.length >=1)
     {
      var cartesian = thisRef.viewer.camera.pickEllipsoid(click.position, thisRef.viewer.scene.globe.ellipsoid);
      thisRef.drawCircle(cartesian);
     }
    }
  }, Cesium.ScreenSpaceEventType.LEFT_CLICK;
};

如果用户被缩小得很远,位置将不准确。它需要基于选定的对象,而不是用户点击。但是我无法弄清楚如何做到这一点。我已经选择了对象,但我不知道如何从这些对象中获取它们的位置。它似乎不是一个实体(尽管我认为图标在创建时是一个实体),所以我不能使用 entity.position。谢谢您的帮助。

标签: objectpositioncesiumpicking

解决方案


事实证明,为了能够访问标准 Cesium 实体,您必须进入 DrillPick 对象 id。所以我修改了我的代码以获取对象列表中的第一个对象并从中获取 id,现在我可以调用标准实体的成员位置。

 this.handler.setInputAction(function(click) {
      var pickedObjects = viewer.scene.drillPick(click.Position);
      if(Cesium.defined(pickedObjects)) {
         if(pickedObjects.length >=1)
         {
          var entity = pickedObjects[0].id;
          thisRef.drawCircle(entity.position);
         }
        }
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK;
    };

推荐阅读