在虛擬地球應(yīng)用中,讀取json文件對(duì)于加載地圖數(shù)據(jù)十分重要,Cesium是目前最流行的虛擬地球應(yīng)用框架之一,今天我們就來(lái)學(xué)習(xí)一下如何使用Cesium讀取json文件。
在Javascript中,我們可以使用XMLHttpRequest對(duì)象來(lái)異步加載json文件。
var xhr = new XMLHttpRequest(); xhr.open('GET', 'data.json', true); xhr.responseType = 'json'; xhr.onload = function() { if (xhr.status === 200) { var data = xhr.response; // 在這里處理data中的數(shù)據(jù) } }; xhr.send();
在以上代碼中,我們先定義了一個(gè)XMLHttpRequest對(duì)象xhr,然后調(diào)用open方法,指定了獲取data.json文件的方式為GET方法,同時(shí)設(shè)置了異步方式為true。接著,我們指定responseType為json,這樣我們就能夠以json格式獲取到文件里面的數(shù)據(jù)。然后,我們?yōu)閤hr的onload事件添加了處理函數(shù)。在這個(gè)函數(shù)中,我們首先檢查狀態(tài)碼是否為200,如果是,則說(shuō)明文件成功加載,將response中的數(shù)據(jù)賦值給data變量。最后,我們可以在處理函數(shù)中處理data了。
在Cesium中,讀取json文件同樣是使用XMLHttpRequest對(duì)象,只不過(guò)有一些不同的API。
Cesium.loadJson('data.json').then(function(data){ // 在這里處理data中的數(shù)據(jù) });
如上代碼所示,我們調(diào)用了Cesium中的loadJson方法,該方法使用Promise對(duì)象來(lái)處理異步操作。我們只需要將文件名傳入作為參數(shù),loadJson方法會(huì)自動(dòng)幫我們獲取文件并返回一個(gè)Promise對(duì)象。在Promise中的then方法中,我們可以獲取到data,并進(jìn)行數(shù)據(jù)處理了。