Merge pull request #6626 from ahocevar/reprojected-cache-size

Respect cacheSize for reprojected caches
This commit is contained in:
Andreas Hocevar
2017-03-22 16:27:11 +01:00
committed by GitHub
4 changed files with 22 additions and 5 deletions

View File

@@ -194,7 +194,7 @@ ol.source.TileImage.prototype.getTileCacheForProjection = function(projection) {
} else {
var projKey = ol.getUid(projection).toString();
if (!(projKey in this.tileCacheForProjection)) {
this.tileCacheForProjection[projKey] = new ol.TileCache();
this.tileCacheForProjection[projKey] = new ol.TileCache(this.tileCache.highWaterMark);
}
return this.tileCacheForProjection[projKey];
}

View File

@@ -15,10 +15,9 @@ ol.TileCache = function(opt_highWaterMark) {
ol.structs.LRUCache.call(this);
/**
* @private
* @type {number}
*/
this.highWaterMark_ = opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;
this.highWaterMark = opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;
};
ol.inherits(ol.TileCache, ol.structs.LRUCache);
@@ -28,7 +27,7 @@ ol.inherits(ol.TileCache, ol.structs.LRUCache);
* @return {boolean} Can expire cache.
*/
ol.TileCache.prototype.canExpireCache = function() {
return this.getCount() > this.highWaterMark_;
return this.getCount() > this.highWaterMark;
};

View File

@@ -20,6 +20,14 @@ describe('ol.source.Tile', function() {
expect(source).to.be.a(ol.source.Source);
expect(source).to.be.a(ol.source.Tile);
});
it('sets a custom cache size', function() {
var projection = ol.proj.get('EPSG:4326');
var source = new ol.source.Tile({
projection: projection,
cacheSize: 42
});
expect(source.getTileCacheForProjection(projection).highWaterMark).to.be(42);
});
});
describe('#setKey()', function() {

View File

@@ -12,9 +12,10 @@ goog.require('ol.tilegrid');
describe('ol.source.TileImage', function() {
function createSource(opt_proj, opt_tileGrid) {
function createSource(opt_proj, opt_tileGrid, opt_cacheSize) {
var proj = opt_proj || 'EPSG:3857';
return new ol.source.TileImage({
cacheSize: opt_cacheSize,
projection: proj,
tileGrid: opt_tileGrid ||
ol.tilegrid.createForProjection(proj, undefined, [2, 2]),
@@ -23,6 +24,15 @@ describe('ol.source.TileImage', function() {
});
}
describe('#getTileCacheForProjection', function() {
it('uses the cacheSize for reprojected tile caches', function() {
var source = createSource(undefined, undefined, 42);
var tileCache = source.getTileCacheForProjection(ol.proj.get('EPSG:4326'));
expect(tileCache.highWaterMark).to.be(42);
expect(tileCache).to.not.equal(source.getTileCacheForProjection(source.getProjection()));
});
});
describe('#setTileGridForProjection', function() {
it('uses the tilegrid for given projection', function() {
var source = createSource();