diff --git a/src/ol/render/canvas.js b/src/ol/render/canvas.js index 66f2323e1a..368f6e2abd 100644 --- a/src/ol/render/canvas.js +++ b/src/ol/render/canvas.js @@ -93,7 +93,10 @@ export const defaultLineWidth = 1; /** + * The label cache for text rendering. To change the default cache size of 2048 + * entries, use {@link ol.structs.LRUCache#setSize}. * @type {ol.structs.LRUCache.} + * @api */ export const labelCache = new LRUCache(); diff --git a/src/ol/structs/LRUCache.js b/src/ol/structs/LRUCache.js index b9dcf321ac..b51f3ed1ed 100644 --- a/src/ol/structs/LRUCache.js +++ b/src/ol/structs/LRUCache.js @@ -267,6 +267,16 @@ LRUCache.prototype.set = function(key, value) { }; +/** + * Set a maximum number of entries for the cache. + * @param {number} size Cache size. + * @api + */ +LRUCache.prototype.setSize = function(size) { + this.highWaterMark = size; +}; + + /** * Prune the cache. */ diff --git a/test/spec/ol/structs/lrucache.test.js b/test/spec/ol/structs/lrucache.test.js index d6d74575d0..9111bce71b 100644 --- a/test/spec/ol/structs/lrucache.test.js +++ b/test/spec/ol/structs/lrucache.test.js @@ -280,4 +280,14 @@ describe('ol.structs.LRUCache', function() { }); }); + describe('setting the cache size', function() { + it('sets the cache size', function() { + lruCache.setSize(2); + expect(lruCache.highWaterMark).to.be(2); + fillLRUCache(lruCache); + lruCache.prune(); + expect(lruCache.getKeys().length).to.be(2); + }); + }); + });