使用Cesium可以直觀的看基於DEM切片產生的Terrain地形數據,有種身臨其境的感覺,但缺點是Cesium默認缺省加載了微軟Bing提供的地形以及遙感影像數據,可以跟蹤日志,總提示讓你申請微軟的Bing地圖Key。如果Cesium在絕對離線,即不連接互聯網的情況下,第一步加載Bing地形圖時候就拋出了異常,后面的圖層也無法加載,整個地圖區域將顯示漆黑的天空,這就意味着需要在底層,取消對Bing地形圖的訪問。
由於Cesium超乎尋常的大,未壓縮情況下有6Mb多,好處是 可以看清楚代碼結構。這樣就可以跟蹤分析,如何取消對Bing地圖的訪問(如采用一般的文本編輯器,基本會死掉,Sublime也會經常卡死,因此我使用宇宙中最強大的IDE-VS2015)。打開Cesium.js后搜索代碼行,有一個createDefaultImageryProviderViewModels函數,里面加載在線地圖服務近10多種,其中一些就是Bing地圖,還有其他互聯網在線地圖商提供的地圖服務。由於我的場景是物理隔絕的網絡,即不能使用在線地圖服務,因此,全部將這些代碼注釋掉,返回空的providerViewModels。
注釋后保存,編寫測試代碼發現加載后的地圖有黑色天空變成了藍色,當然,很丑陋。
為了避免藍色地球,預先加載了一張全球地圖作為背景,效果如下:
接下來,采用爬蟲爬取谷歌地形圖和影像圖,硬盤越大越好,縮放級別越高越好,使用IIS發布后,調用如下接口在Cesium中顯示地形圖,代碼如下:
layersTerrainMap.addImageryProvider(Cesium.createTileMapServiceImageryProvider({
url: 'http://192.168.198.183/Google_DEM/',
credit: 'Google_DEM'
}));
效果如下圖所示: