How to use CesiumJS to visualize data from a Session: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
// variables | |||
const dim = 128; | |||
const minLevel = 6; | |||
const maxLevel = 19; | |||
const tilepx = 512; | |||
// Construct the default list of terrain sources. | |||
var terrainModels = []; | |||
terrainModels.push(new Cesium.ProviderViewModel({ | |||
name: "Project Terrain", | |||
category: "Terrain", | |||
iconUrl: Cesium.buildModuleUrl('Widgets/Images/TerrainProviders/Ellipsoid.png'), | |||
creationFunction: function () { | |||
return new Cesium.CustomHeightmapTerrainProvider({ | |||
width: dim, | |||
height: dim, | |||
maximumLevel: maxLevel, | |||
callback: function (x, y, level) { | |||
if (level <= 10) { // ignore zoom levels 10 and lower | |||
return new Float32Array(dim * dim); // all zeros | |||
} | |||
const test = Cesium.Resource.fetchArrayBuffer('terrain/' + level + '/' + x + '/' + y + '.bin?worlddatum=true&token=$TOKEN&width=' + dim + '&height=' + dim); | |||
return test.then(function (buffer) { | |||
const array = new Float32Array(dim * dim); // all zeros | |||
const view = new DataView(buffer); | |||
for (let i = 0; i < dim * dim; i++) { | |||
array[i] = view.getFloat32(i * 4); | |||
} | |||
return array; | |||
}); | }); | ||
} | }, | ||
})); | }); | ||
} | |||
})); | |||
</pre> | </pre> | ||
Revision as of 12:54, 1 March 2024
// variables const dim = 128; const minLevel = 6; const maxLevel = 19; const tilepx = 512; // Construct the default list of terrain sources. var terrainModels = []; terrainModels.push(new Cesium.ProviderViewModel({ name: "Project Terrain", category: "Terrain", iconUrl: Cesium.buildModuleUrl('Widgets/Images/TerrainProviders/Ellipsoid.png'), creationFunction: function () { return new Cesium.CustomHeightmapTerrainProvider({ width: dim, height: dim, maximumLevel: maxLevel, callback: function (x, y, level) { if (level <= 10) { // ignore zoom levels 10 and lower return new Float32Array(dim * dim); // all zeros } const test = Cesium.Resource.fetchArrayBuffer('terrain/' + level + '/' + x + '/' + y + '.bin?worlddatum=true&token=$TOKEN&width=' + dim + '&height=' + dim); return test.then(function (buffer) { const array = new Float32Array(dim * dim); // all zeros const view = new DataView(buffer); for (let i = 0; i < dim * dim; i++) { array[i] = view.getFloat32(i * 4); } return array; }); }, }); } }));