我有一个工作解决方案,使用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地图。
任何人都知道我可能缺少什么? 谢谢!