问题描述
我正在尝试围绕通过单击选择的图标绘制圆圈。我当前的代码是:
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;
};