Merge pull request #226 from twpayne/preserve-low-resolution-tiles

Preserve low resolution tiles
This commit is contained in:
Tom Payne
2013-02-22 02:14:41 -08:00
6 changed files with 55 additions and 16 deletions

View File

@@ -199,6 +199,7 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame =
}
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
tileSource.useLowResolutionTiles(z, frameState.extent);
this.scheduleExpireCache(frameState, tileSource);
var transform = this.transform_;

View File

@@ -217,6 +217,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
}
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
tileSource.useLowResolutionTiles(z, frameState.extent);
this.scheduleExpireCache(frameState, tileSource);
};

View File

@@ -14,7 +14,6 @@ goog.require('ol.TileState');
goog.require('ol.layer.Layer');
goog.require('ol.layer.LayerProperty');
goog.require('ol.layer.LayerState');
goog.require('ol.source.Source');
goog.require('ol.source.TileSource');
@@ -222,24 +221,24 @@ ol.renderer.Layer.prototype.updateAttributions =
/**
* @protected
* @param {Object.<string, Object.<string, ol.TileRange>>} usedTiles Used tiles.
* @param {ol.source.Source} source Source.
* @param {ol.source.TileSource} tileSource Tile source.
* @param {number} z Z.
* @param {ol.TileRange} tileRange Tile range.
*/
ol.renderer.Layer.prototype.updateUsedTiles =
function(usedTiles, source, z, tileRange) {
function(usedTiles, tileSource, z, tileRange) {
// FIXME should we use tilesToDrawByZ instead?
var sourceKey = goog.getUid(source).toString();
var tileSourceKey = goog.getUid(tileSource).toString();
var zKey = z.toString();
if (sourceKey in usedTiles) {
if (zKey in usedTiles[sourceKey]) {
usedTiles[sourceKey][zKey].extend(tileRange);
if (tileSourceKey in usedTiles) {
if (zKey in usedTiles[tileSourceKey]) {
usedTiles[tileSourceKey][zKey].extend(tileRange);
} else {
usedTiles[sourceKey][zKey] = tileRange;
usedTiles[tileSourceKey][zKey] = tileRange;
}
} else {
usedTiles[sourceKey] = {};
usedTiles[sourceKey][zKey] = tileRange;
usedTiles[tileSourceKey] = {};
usedTiles[tileSourceKey][zKey] = tileRange;
}
};
@@ -247,15 +246,15 @@ ol.renderer.Layer.prototype.updateUsedTiles =
/**
* @protected
* @param {Object.<string, Object.<string, boolean>>} wantedTiles Wanted tiles.
* @param {ol.source.Source} source Source.
* @param {ol.source.TileSource} tileSource Tile source.
* @param {ol.TileCoord} tileCoord Tile coordinate.
*/
ol.renderer.Layer.prototype.updateWantedTiles =
function(wantedTiles, source, tileCoord) {
var sourceKey = goog.getUid(source).toString();
function(wantedTiles, tileSource, tileCoord) {
var tileSourceKey = goog.getUid(tileSource).toString();
var coordKey = tileCoord.toString();
if (!(sourceKey in wantedTiles)) {
wantedTiles[sourceKey] = {};
if (!(tileSourceKey in wantedTiles)) {
wantedTiles[tileSourceKey] = {};
}
wantedTiles[sourceKey][coordKey] = true;
wantedTiles[tileSourceKey][coordKey] = true;
};

View File

@@ -459,6 +459,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
}
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
tileSource.useLowResolutionTiles(z, frameState.extent);
this.scheduleExpireCache(frameState, tileSource);
goog.vec.Mat4.makeIdentity(this.texCoordMatrix_);