Merge pull request #6626 from ahocevar/reprojected-cache-size
Respect cacheSize for reprojected caches
This commit is contained in:
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user