I3SDataProvider是CesiumJS中的一个模块,用于加载和可视化I3S(Indexed 3D Scene Layer)数据。I3S是一种基于Web的高效地理空间数据格式,用于传输、管理和渲染三维地形和城市模型等数据。
new Cesium.I3SDataProvider(options)
options
参数为一个对象,包含以下属性:
url
: 必需,I3S数据的URL。name
: 可选,数据提供者的名称,默认为URL中的文件名。maximumScreenSpaceError
: 可选,一个数字,表示可接受的屏幕空间误差(单位为像素),默认值为2。当误差小于该值时,CesiumJS将停止细分三角形。provider.loadMetadata()
该方法返回一个Promise对象,用于加载I3S数据的元数据。
provider.loadTileset(tilesetUrl)
该方法返回一个Promise对象,用于加载指定tileset的数据。参数tilesetUrl
为tileset的URL。
provider.update(frameState)
该方法用于更新I3S数据提供者的状态。参数frameState
为CesiumJS的帧状态对象。可以在场景每帧渲染之前调用。
provider.destroy()
该方法用于销毁I3S数据提供者。
I3S数据的URL,与构造函数中的options
参数中的url
属性相同。
数据提供者的名称,与构造函数中的options
参数中的name
属性相同,默认为URL中的文件名。
数据提供者的来源,为Cesium.Credit
对象。
一个Promise对象,在数据提供者加载完毕后变为已完成状态。可以使用该属性来检查数据提供者是否已准备好使用。
一个Cesium3DTileset
对象,表示当前加载的tileset数据。可以使用该属性来获取tileset的根节点(root)。
当数据提供者加载完毕后,将触发readyPromise
事件。可以使用以下方式来监听该事件:
provider.readyPromise.then(function() {
// 数据提供者加载完毕后执行的代码...
});
以下是一个使用I3SDataProvider加载I3S数据的示例:
var viewer = new Cesium.Viewer('cesiumContainer');
var provider = new Cesium.I3SDataProvider({
url: 'path/to/Tileset.json'
});
provider.loadMetadata().then(function(metadata) {
// 加载元数据完成后执行的代码...
});
provider.loadTileset('path/to/Tileset.json').then(function(tileset) {
// 加载tileset完成后执行的代码...
viewer.scene.primitives.add(tileset);
});
viewer.scene.preRender.addEventListener(function(frameState) {
provider.update(frameState);
});
viewer.scene.globe.tileCache.maximumSize = 10000;