如何在铯地图上获得点击图标的位置

问题描述

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

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。感谢您的帮助。

解决方法

事实证明,为了能够访问标准的 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;
    };