我有一个可行的解决方案,可以使用Cesium.Viewer.camera提供的pickEllipsoid()函数来计算视口的边界。它适用于2D和3D。拾取部分如下所示:
getLatLonFromPixel = function(viewer, x, y) {
var pixel = new Cesium.Cartesian2(x, y);
var ellipsoid = viewer.scene.globe.ellipsoid;
var cartesian = viewer.camera.pickEllipsoid(pixel, ellipsoid);
if (cartesian) {
var cartographic = ellipsoid.cartesianToCartographic(cartesian);
return {
latitude: Cesium.Math.toDegrees(cartographic.latitude),
longitude: Cesium.Math.toDegrees(cartographic.longitude)
};
}
return null;
};我最近添加了使用Viewer.trackedEntity的实体跟踪,当被跟踪的实体被设置时,边界在3D中被正确计算,而不是在2D中。
我所说的被跟踪实体是Cesium Viewer类上的trackedEntity属性。
我已经包含了一些通过添加控制台线路而计算出的界限。
3D with no entity being tracked: 3D with an entity being tracked:
north: 42.79154866747982, north: 42.363594155001614,
east: -68.4164021205193, east: -70.01866640806165,
south: 40.97543616484347, south: 41.405727044270265,
west: -72.88803850857998 west: -71.78853254159573
2D with no entity being tracked: 2D with an entity being tracked:
north: 42.382604597019046, north: 0.00024308806452135405,
east: -70.67532426625976, east: 0.00044915764205976055,
south: 41.42473748628768, south: -0.00024308806452135392,
west: -72.44519039979383 west: -0.0004491576420597605我为2d获取的值与被跟踪的实体没有任何意义。我已经尝试使用globe.pick(光线,场景),但这似乎不适用于2D贴图。
有人知道我可能会错过什么吗?谢谢!
发布于 2015-11-25 04:12:51
这看起来像是in里的虫子。我提交了issue #3242文件。
https://stackoverflow.com/questions/33902154
复制相似问题