Cesium中文教程-空间数据可视化Visualizing Spatial Data(二)

本文是Cesium中文教程的一部分,主要介绍了如何控制相机,包括zoomTo、flyTo方法以及相机的追踪功能。同时,讲解了管理实体的概念,如EntityCollection的使用,以及如何通过唯一ID来更新和获取实体。此外,文章还涉及到了挑选Picking的基础知识,点、广告牌和标签的可视化,3D模型的加载和定位,以及Cesium的Property系统,为实现动态数据可视化打下基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

(5)相机控制(Camera Controls)

(6)管理实体(Managing Entities)

挑选Picking

(7)点、广告牌、标签(Points,Billboards,and Labels)

(8)3D模型(3D Models)

(9)The Property System

(10)下一步工作(Where to go from here)

(5)相机控制(Camera Controls)

前面第一个例子中,使用zoomTo控制展示到一个特定的实体。其实也可以通过按下InfoBox左上角的camera按钮或双击一个实体来完成。还有一种flyTo的方法,可以达到相同的视图效果,采用摄像机飞行的动画来完成,而不是立即跳转。除了能捕捉到单一的实体,这两种方法都可以被传递为一个EntityCollection(之后讨论哦),一个DataSource,常用来加载通用的数据格式,如GeoJSON,或者一个标准JavaScript的实体数组。

默认情况下,任何方法都将计算出一个视角,来确保整个实体是可见得。相机将被调整为朝北,45度角直视目标物。可以通过提供的heading,pith和range来定制视角。下面的代码转动相机从东面30度来直视Wyoming,由于没有定义range,使用了计算的默认值。

var heading = Cesium.Math.toRadians(90);  
var pitch = Cesium.Math.toRadians(-30);  
viewer.zoomTo(wyoming, new Cesium.HeadingPitchRange(heading, pitch)); 

zoomToflyTo都是异步函数,也就是说它们不能保证在返回之前已经完成。例如,飞到一个实体发生在许多动画帧。这些函数返回一个应答(Promises),这可以让用户预订在飞行或者缩放完成后执行函数。使用下面的语句替换例子中的zoomTo,这不仅会飞到wyoming,还会在飞行完后选中它。

viewer.flyTo(wyoming).then(function(result){  
    if (result) {  
        viewer.selectedEntity = wyoming;  
    }  
}); 
 

如果飞行成功完成,那么传递给回调函数的result参数是true,如果飞行被取消,即用户初始化另一个飞行或者在完成之前缩放,或因为目标没有相应的可视化功能,即无法实现缩放,那么传递给回调函数的result参数是false。

有时,在应用于时间序列的动态数据时,希望相机集中在实体而不是地球。这种情况可以设置viewer.trackedEntity属性。追踪实体需要设置position,在第一个例子中尝试这种方式,可以给wyoming增加一个位置来追踪它:

wyoming.position = Cesium.Cartesian3.fromDegrees(-107.724, 42.68);  
viewer.trackedEntity = wyoming;  

通过不定义viewer.trackedEntity或者点击InfoBox消息框左上角的取消按钮可以停止追踪。调用zoomTo或者flyTo也将取消追踪,viewer.trackedEntity将成为没有定义。

对于许多用例,viewer提供的专对于实体的相机功能已经足够了,如果想进一步在应用程序中定制视图,可以查看相机教程Camera tutorial)。

(6)管理实体(Managing Entities)

EntityCollection是一个关联矩阵,可以方便地管理和监控一组实体。以viewer.entities属性的形式已经使用过它,EntityCollection即有一些传统的方法&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值