cesium加载entity图片缩放_Cesium中级教程4 – 空间数据可视化(二)
Cesium中文網(wǎng):http://cesiumcn.org/ | 國內(nèi)快速訪問:http://cesium.coinidea.com/
Viewer中的Entity功能
讓我們看看Viewer為操作entities提供出來的功能函數(shù)。
選中和描述
點(diǎn)擊Viewer中的entity將在entity的位置上呈現(xiàn)SelectionIndicator控件,提供一個(gè)InfoBox用于呈現(xiàn)更多的信息。我們可以設(shè)置name,來定義InfoBox的標(biāo)題。我們也以HTML樣式來提供Entity.description的屬性。
wyomingInfoBox中展示的所有HTML是沙盒式的。這組織了外部數(shù)據(jù)源帶有惡意的注入到Cesium的應(yīng)用程序中。為了在描述中運(yùn)行JavaScript或?yàn)g覽器插件,訪問沙盒中的iframe通過viewer.infoBox.frame屬性。參考該文 可以獲得更多的信息用于控制iframe中的沙盒。
Camera控制
使用iewer.zoomto命令查看特定Entity。還有一個(gè)viewer.flyto方法,用于對Entity執(zhí)行動(dòng)畫Camera飛行。這兩種方法都可以傳遞給Entity、EntityCollection、DataSource或?qū)嶓w數(shù)組。
任何一種方法都會(huì)計(jì)算所有提供的實(shí)體的視圖。默認(rèn)情況下,Camera朝向北方,并從45度角向下看。通過傳入HeadingPitchrange自定義此項(xiàng)。
var[圖片上傳失敗…(image-ae8bb6-1558490847491)]
zoomTo和flyTo都是異步函數(shù);也就是說,它們不能保證在返回之前完成。例如,飛行到Entity會(huì)在許多動(dòng)畫幀后發(fā)生。這兩個(gè)功能都返回Promises,可用于計(jì)劃飛行或縮放完成后要執(zhí)行的功能。用下面的代碼片段替換示例中的zoomTo。這架飛機(jī)飛往懷俄明州,并在飛行結(jié)束后選中它。
viewer如果航班飛行成功完成,則傳遞給回調(diào)函數(shù)的結(jié)果參數(shù)將為true;如果航班被取消,則結(jié)果參數(shù)將為false,即,在此航班完成之前,用戶啟動(dòng)了另一個(gè)航班或縮放;或者,由于目標(biāo)沒有相應(yīng)的可視化效果,即沒有可縮放的對象。
有時(shí),特別是在處理時(shí)間動(dòng)態(tài)數(shù)據(jù)時(shí),我們希望Camera聚焦跟隨一個(gè)entity而不是地球的中心。可以通過設(shè)置viewer.trackedEntity完成。跟蹤實(shí)體需要設(shè)置position。
wyoming停止跟蹤需要設(shè)置viewer.trackedEntity為undefined或遠(yuǎn)離entity雙擊屏幕即可。調(diào)用zoomTo或flyTo也可以取消跟蹤。
管理Entities
EntityCollection是用于管理和監(jiān)視一組實(shí)體的關(guān)聯(lián)數(shù)組。viewer.entities是EntityCollection。EntityCollection包括用于管理實(shí)體的方法,如add、remove和removeAll。
有時(shí)我們需要更新我們以前創(chuàng)建的實(shí)體。所有實(shí)體實(shí)例都有一個(gè)唯一的id,可用于從集合中檢索實(shí)體。我們可以為實(shí)體指定一個(gè)ID,否則將自動(dòng)生成一個(gè)ID。
viewer使用getByiId檢索實(shí)體。如果不存在具有提供的ID的實(shí)體,則返回undefined。
var要獲取實(shí)體或創(chuàng)建新實(shí)體(如果不存在),請使用getOrCreateEntity。
var手動(dòng)創(chuàng)建新實(shí)體,然后使用add將其添加到集合中。如果集合中已存在具有相id的實(shí)體,則此方法將拋出異常。
varEntityCollection的功能使用CollectionChanged事件發(fā)光。當(dāng)在集合中添加、刪除或更新實(shí)體時(shí),會(huì)通知監(jiān)聽器。
使用Sandcastle中的[Geometry Showcase]
(https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=Geometry%20and%20Appearances.html&label=Showcases) 示例。在創(chuàng)建viewer的行后粘貼以下代碼。
運(yùn)行該示例時(shí),您應(yīng)該在控制臺(tái)中看到大約65條消息,每次調(diào)用viewer.entities.add時(shí)都會(huì)看到一條消息。
當(dāng)一次更新大量的實(shí)體時(shí),將隊(duì)列更新結(jié)束后并在最后發(fā)送一個(gè)整體事件,這樣更具性能。這樣Cesium可以在一次通過中處理所需的變化。在示例末尾,在viewer.entities.add之前調(diào)用viewer.entities.suspendEvents,并調(diào)用viewer.entities.resumeEvents。當(dāng)再次運(yùn)行演示時(shí),我們現(xiàn)在得到包含所有65個(gè)實(shí)體的單一事件。這些調(diào)用是引用計(jì)數(shù)的,因此可以嵌套多個(gè)掛起和恢復(fù)調(diào)用。
Picking 拾取
選擇(單擊選擇一個(gè)對象)是我們需要與基本API進(jìn)行短暫交互的領(lǐng)域之一。使用scene.pick和scene.drillpick檢索實(shí)體。
/**Points, billboards, and labels(點(diǎn)、廣告牌和標(biāo)簽)
通過設(shè)置position、point和label來創(chuàng)建圖形點(diǎn)或標(biāo)簽。例如,在我們最喜歡的運(yùn)動(dòng)隊(duì)的主體育場放置一個(gè)點(diǎn)。
var[圖片上傳失敗…(image-9c705e-1558490847491)]
默認(rèn)情況下,標(biāo)簽水平和垂直居中。由于標(biāo)簽和點(diǎn)共享相同的位置,它們在屏幕上重疊。為避免這種情況,請指定標(biāo)簽源Verticalorigin.BOTTOM并將像素偏移量設(shè)置為(0,-9)。
將該點(diǎn)替換為一個(gè)billboard,它是一個(gè)始終面向用戶的標(biāo)記。
有關(guān)更多自定義選項(xiàng),請參見Sandcastle標(biāo)簽和廣告牌示例。
3D models (三維模型)
CesiumJS支持通過glTF(運(yùn)行時(shí)asset format)創(chuàng)建3D模型。您可以在3D modelsSandcastle中找到示例模型。
將位置和URI設(shè)置為glTF 模型以創(chuàng)建模型實(shí)體。
var默認(rèn)情況下,模型是垂直的,面向東。通過為Entity.Orientation屬性指定Quaternion來控制模型的方向。這將控制模型的heading、pitch和roll。
var有關(guān)更高級(jí)的模型功能,請參見3D模型教程。如果你創(chuàng)建自己的模型,一定要看到我們關(guān)于glTF Tips for Artists提示的帖子。
The property system(屬性系統(tǒng))
我們?yōu)閷?shí)體定義的所有值都存儲(chǔ)為property對象。例如,請參見懷俄明州大綱的值:
consoleoutline是ConstantProperty的一個(gè)實(shí)例。本教程使用一種稱為隱式屬性轉(zhuǎn)換(implicit property conversion)的速記形式,它自動(dòng)獲取原始值并在引擎蓋下創(chuàng)建相應(yīng)的Property。如果沒有這個(gè)速記,我們將不得不編寫一個(gè)更長版本的初始示例:
var之所以使用屬性,是因?yàn)閷?shí)體API不僅能夠表示常量值,而且能夠表示隨時(shí)間變化的值。請參閱Callback Property和Interpolation Sandcastle示例,了解一些時(shí)間動(dòng)態(tài)屬性。
資源
有關(guān)如何使用GeoJSON和CZML設(shè)置樣式和創(chuàng)建實(shí)體的示例,請參閱Cesium Workshop Tutorial。
Cesium中文網(wǎng)交流QQ群:807482793
Cesium中文網(wǎng):http://cesiumcn.org/ | 國內(nèi)快速訪問:http://cesium.coinidea.com/
總結(jié)
以上是生活随笔為你收集整理的cesium加载entity图片缩放_Cesium中级教程4 – 空间数据可视化(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @value 注入静态属性_TP6依赖注
- 下一篇: 输入两个数、用python求他们的和_从