TileDiscardPolicy
是一个用于决定哪些瓦片应该被丢弃的策略类。当加载某个图层的瓦片时,可能会出现一些瓦片无法成功加载,或者占用过多的内存和带宽资源,因此需要通过TileDiscardPolicy
对这些瓦片进行管理和丢弃。
var viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider : Cesium.createWorldTerrain({
// 设置瓦片切换策略
tileDiscardPolicy : new CustomTileDiscardPolicy()
})
});
在Viewer
的初始化代码中,通过createWorldTerrain
方法创建一个地形提供者对象,并以CustomTileDiscardPolicy
作为切换策略。这里我们使用自定义的切换策略,接下来将详细介绍如何编写一个自定义的TileDiscardPolicy
类。
编写一个自定义的TileDiscardPolicy
类需要继承Cesium.TileDiscardPolicy
并实现isReady
和shouldDiscardImage
方法。下面是一个自定义的TileDiscardPolicy
示例:
function CustomTileDiscardPolicy() {}
CustomTileDiscardPolicy.prototype = Object.create(Cesium.TileDiscardPolicy.prototype);
CustomTileDiscardPolicy.prototype.isReady = function() {
// 只有当判断完成后才会加载瓦片
return true;
};
CustomTileDiscardPolicy.prototype.shouldDiscardImage = function(image, imageryLayer) {
// 判断图片是否正常加载
if (image.loaded) {
return false;
} else {
return true;
}
};
在CustomTileDiscardPolicy
中,我们先声明了一个空函数,然后通过Object.create()
方法将TileDiscardPolicy
的原型对象赋值给原型,从而实现了继承。
在isReady
方法中,我们只是简单地返回true
,表示加载的瓦片都可以正常显示。当isReady
返回false
时,框架会停止加载所有瓦片,直到isReady
再次返回true
。
在shouldDiscardImage
方法中,我们判断了当前的图片是否正常加载。如果image.loaded
的值为true
,则表示图片已经加载完成,可以正常显示,此时返回false
。如果image.loaded
的值为false
,则表示图片没有成功加载,需要被丢弃,此时返回true
。
TileDiscardPolicy
是CesiumJS用于管理和丢弃加载的瓦片的策略类。我们可以通过继承Cesium.TileDiscardPolicy
并实现isReady
和shouldDiscardImage
方法来编写自定义的TileDiscardPolicy
类。自定义的TileDiscardPolicy
类可以用于控制哪些瓦片应该被加载和哪些瓦片应该被丢弃,从而优化地图渲染效率。