Respect cacheSize for reprojected caches

This commit is contained in:
Andreas Hocevar
2017-03-22 15:50:58 +01:00
parent 57e67e62bb
commit 07d4492ece
4 changed files with 22 additions and 5 deletions

View File

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

View File

@@ -15,10 +15,9 @@ ol.TileCache = function(opt_highWaterMark) {
ol.structs.LRUCache.call(this); ol.structs.LRUCache.call(this);
/** /**
* @private
* @type {number} * @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); ol.inherits(ol.TileCache, ol.structs.LRUCache);
@@ -28,7 +27,7 @@ ol.inherits(ol.TileCache, ol.structs.LRUCache);
* @return {boolean} Can expire cache. * @return {boolean} Can expire cache.
*/ */
ol.TileCache.prototype.canExpireCache = function() { 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.Source);
expect(source).to.be.a(ol.source.Tile); 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() { describe('#setKey()', function() {

View File

@@ -12,9 +12,10 @@ goog.require('ol.tilegrid');
describe('ol.source.TileImage', function() { 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'; var proj = opt_proj || 'EPSG:3857';
return new ol.source.TileImage({ return new ol.source.TileImage({
cacheSize: opt_cacheSize,
projection: proj, projection: proj,
tileGrid: opt_tileGrid || tileGrid: opt_tileGrid ||
ol.tilegrid.createForProjection(proj, undefined, [2, 2]), 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() { describe('#setTileGridForProjection', function() {
it('uses the tilegrid for given projection', function() { it('uses the tilegrid for given projection', function() {
var source = createSource(); var source = createSource();