object - 如何在铯地图上获取点击图标的位置
问题描述
我正在尝试围绕通过单击选择的图标绘制圆圈。我目前的代码是:
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;
};
推荐阅读
- java - 2个实体的不同双向@ManyToOne父级扩展了一些基本实体,但将基本实体数据保存在一个表中
- spring - 有一个包含所有内容的 Rest 存储库 json 和一个排除字段的 json
- html - 按钮不会出现在网页中?
- php - file_exists() 使用带有 ~ 的路径时返回 false,其中包含波浪号
- c++ - 线程安全读取类成员向量,无需复制
- c# - 将数据从数据网格传递到表单并将其插入数据库
- algorithm - 求取 n 个给定点中的 3 个形成的不同圆的数量
- c++ - 优化 memcpy
- internet-explorer-11 - 在 Powershell 中通过其 COM 对象浏览 IE
- c++-winrt - 如何将 C++.winRT 空白页添加到 c++/wint 空白应用程序 - 使用 Visual Studio 2017?