我想确保一个实体始终可见,但是它不必位于视图的中心(因此,我不能使用trackedEntity
)。换句话说–让实体在当前视图中移动(为SampledPositionProperty
),让用户根据需要缩放和移动视图,但是如果实体远离视图(或者用户从实体中移动视图) ),然后将视图围绕实体居中一次。
在Google Maps API中,这很简单:
if (!map.getBounds().contains(latLng)) {
map.setCenter(latLng);
}
我在Cesium中找不到类似的API,我认为我肯定缺少明显的东西。我已经尝试过Entity.isShowing
,但它并不在乎相机视图。
// lat, lng, height defined
const cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height);
if (!Cesium.Rectangle.contains(map.camera.computeViewRectangle(), cartographic)) {
const destination = Cesium.Cartesian3.fromDegrees(lng, lat, height);
map.camera.flyTo({destination, duration: .5});
}