入門指南(Getting Started)
學習使用全球地形、圖像、3D瓦片和地理編碼(geocoding)構建Cesium應用程序。
1 即將構建的Cesium app,點擊進行交互
CesiumJS是一個應用於web 3D地圖的JavaScript庫。Cesium ion是發現3D內容和填充自己的數據流中心。CesiumJS和ion一起協同工作,能夠構建世界級3D地圖應用程序。
2使用Cesium ion對3D數據進行優化,並在CesiumJS中可視化
第一個應用程序(Your first app)
下面是你的第一個Cesium應用程序源碼:
1. <!DOCTYPE html>
2. <html lang="en">
3. <head>
4. <meta charset="utf-8">
5. <script src="https://cesiumjs.org/releases/1.56.1/Build/Cesium/Cesium.js"></script>
6. <link href="https://cesiumjs.org/releases/1.56.1/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
7. </head>
8. <body>
9. <div id="cesiumContainer" style="width: 700px; height:400px"></div>
10. <script>
11. Cesium.Ion.defaultAccessToken = 'your_access_token';
12. var viewer = new Cesium.Viewer('cesiumContainer');
13. </script>
14. </body>
15. </html>
注意:創建一個Cesium ion賬戶
注意上面代碼中的your_access_token佔位符。創建一個Cesiun ion賬戶來使用本教程中的3D內容。在這裏註冊(Sign up here),上面的示例代碼將使用你的token自動進行更新。如果已經有賬戶,請登錄(sign in)。
Web應用需要web服務,CesiumJS同樣需要。爲了簡單期間,本教程略過服務設置,使用在線應用IDE Glitch進行web開發。點擊(clicking here)創建一個新的Glitch工程,忽略模板中的說明,點擊index.html,刪除裏面的所有內容,並使用上面的代碼。
3 Glitch IDE
點擊 按鈕,它將打開一個新的窗口作爲Cesium應用的響應。當你修改代碼時,視圖將自動更新。
4 CesiumJS默認使用由ion賬戶提供的Bing底圖
代碼分解(Breaking down the code)
在HTML的head內容中包含CesiumJS庫
1. <script src="https://cesiumjs.org/releases/1.56.1/Build/Cesium/Cesium.js"></script>
2. <link href="https://cesiumjs.org/releases/1.56.1/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
創建一個HTML元素來保存CesiumJS widget:
1. <div id="cesiumContainer"></div>
ion賬戶提供一個token來訪問Bing底圖。由於已經登錄了Cesium ion,所以默認賬戶的token自動在本教程中使用:
1. Cesium.Ion.defaultAccessToken = '';
最後,創建一個頂部的Cesium部件,命名爲Viewer,使用上面定義的HTML div元素:
1. var viewer = new Cesium.Viewer('cesiumContainer');
添加Cesium世界地形(Adding Cesium World Terrain)
Cesium World Terrain(Cesium世界地形)是一個高分辨率的全球地形asset,其保存在你的ion賬戶中。用以下代碼代替創建的Viewer widget,將它添加到你的Cesium應用程序:
1. var viewer = new Cesium.Viewer('cesiumContainer', {
2. terrainProvider: Cesium.createWorldTerrain()
3. });
當你放大到例如“Grand Canyon,AZ”這樣的地方,將看到Cesium世界地形的效果:
5 10米分辨率科羅拉多大峽谷
加載自己數據(Loading your own data)
你可以上傳自己的數據到Ceisum ion,並將其瓦片化爲3D Tiles,3D Tiles是一種對海量異構三維地理空間數據流的開放規範。本教程中,我們提供帶有單個建築示例的KML/COLLADA包。使用它創建一個3D Tiles tileset,並將其添加到應用程序中。點擊(clicking here)來下載。
導航到ion,並將剛下載的AGI_HQ.kmz文件拖拽到頁面任何位置,點擊上傳。
上傳完成後,ion將立刻開始tiling處理並在右上角報告進度。瓦片化完成後,將在左側出現新asset選項,按頁面右下角示例代碼旁邊的copy(複製)按鈕。將結果複製到Glitch中,創建Viewer行之後。
1. var tileset = viewer.scene.primitives.add(
2. new Cesium.Cesium3DTileset({
3. url: Cesium.IonResource.fromAssetId(your_asset_id)
4. })
5. );
使用一行代碼,將程序的默認視圖設置爲tileset:
1. viewer.zoomTo(tileset)
6 加載到CesiumJS中的3D Tiles asset,與你自己的asset看起來有所不同
祝賀!你已經創建了第一個Cesium app。
以下是完整的參考示例:
1. <!DOCTYPE html>
2. <html lang="en">
3. <head>
4. <meta charset="utf-8">
5. <script src="https://cesiumjs.org/releases/1.56.1/Build/Cesium/Cesium.js"></script>
6. <link href="https://cesiumjs.org/releases/1.56.1/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
7. </head>
8. <body>
9. <div id="cesiumContainer" style="width: 700px; height:400px"></div>
10. <script>
11. Cesium.Ion.defaultAccessToken = 'your_access_token';
12. var viewer = new Cesium.Viewer('cesiumContainer', {
13. terrainProvider: Cesium.createWorldTerrain()
14. });
15.
16. var tileset = viewer.scene.primitives.add(
17. new Cesium.Cesium3DTileset({
18. url: Cesium.IonResource.fromAssetId(your_asset_id)
19. })
20. );
21. viewer.zoomTo(tileset);
22. </script>
23. </body>
24. </html>
接下來呢?現在你已經知道如何設置一個基本的Cesium app,可以瀏覽Sandcastle上的代碼示例,來了解所有特性和一些常見的使用案例。