CZML是cesium中很重要的一個概念,也是一個亮點,CZML使得cesium很酷很炫地展現動態數據成爲可能。git
CZML是一種JSON格式的字符串,用於描述與時間有關的動畫場景,CZML包含點、線、地標、模型、和其餘的一些圖形元素,並指明瞭這些元素如何隨時間而變化。某種程度上說, Cesium 和 CZML的關係就像 Google Earth 和 KML。github
CZML 的一個典型結構以下算法
[ // packet one { "id": "GroundControlStation" "position": { "cartographicDegrees": [-75.5, 40.0, 0.0] }, "point": { "color": { "rgba": [0, 0, 255, 255] }, } }, // packet two { "id": "PredatorUAV", // ... } ]
如上CZML片斷描述了兩個包(packet,這裏每一個包描述了一個點),每一個包的id,position和color。動畫
每一個包都有一個 id
屬性用來惟一標識這個對象。id不必定要求用GUIDs,可是最好在載入場景中CZML中可以惟一單個的對象。若是id沒有指定, cesium會自動生成一個,可是,這樣在後續處理中會遇到麻煩,好比後面的操做中須要引用這個對象並給它添加更多的數據。除了id屬性
, 一個包還會有更多的屬性用於描述這個對象的特性. 在上面這個例子中, 咱們指定了一個id爲"GroundControlStation" 的對象,這個對象擁有一個固定的WGS84座標 (-75.5 ,40.0,0.0), 並在這個位置顯示一個藍色的點。更多的屬性參考https://github.com/AnalyticalGraphicsInc/cesium/wiki/CZML-Content。spa
CZML比較特殊的是跟時間序列相關的屬性code
{ // ... "someInterpolatableProperty": { "cartesian": [ "2012-04-30T12:00Z", 1.0, 2.0, 3.0, //表示當時間爲2012-04-30T12:00Z,座標爲(1,2,3) "2012-04-30T12:01Z", 4.0, 5.0, 6.0, //表示當時間爲2012-04-30T12:01Z,座標爲(4,5,6) "2012-04-30T12:02Z", 7.0, 8.0, 9.0 //表示當時間爲2012-04-30T12:02Z,座標爲(7,8,9) ] } } { // ... "someInterpolatableProperty": { "epoch": "2012-04-30T12:00Z", //表示時間起點爲2012-04-30T12:00:00 "cartesian": [ 0.0, 1.0, 2.0, 3.0, //從起點開始,第0秒時座標爲(1,2,3) 60.0, 4.0, 5.0, 6.0, //從起點開始,第60秒時座標爲(4,5,6) 120.0, 7.0, 8.0, 9.0 //從起點開始,第120秒時座標爲(7,8,9) ] } } { // ... "someInterpolatableProperty": { "epoch": "2012-04-30T12:00Z", "cartesian": [ 0.0, 1.0, 2.0, 3.0, 60.0, 4.0, 5.0, 6.0, 120.0, 7.0, 8.0, 9.0 ], "interpolationAlgorithm": "LAGRANGE", //插值算法爲LAGRANGE,還有HERMITE,GEODESIC "interpolationDegree": 5 //1爲線性插值,2爲平方插值 }, }
定義了一個CZML後,就能夠把它載入到場景中,就能得到該對象的動態效果orm
dataSource = new Cesium.CzmlDataSource(); dataSource.load(czml); viewer.dataSources.add(dataSource);
好比咱們載入官方的czml例子中的Vehicle.czml,就能看到一輛小車緩緩移動,這時候動畫控制器就頗有用,能夠快進、暫停、倒放、回放等等對象
CZML的草案已經提交到OGC,有望成爲與KML競爭的國際標準。
開發
本篇到此結束。下一篇《cesiumjs開發實踐(七) 3D模型》字符串