Merge pull request #7327 from tschaub/tile-management

Prune the tile cache after updating a source's URL
This commit is contained in:
Tim Schaub
2017-10-09 17:01:12 -06:00
committed by GitHub
18 changed files with 308 additions and 79 deletions
+3 -1
View File
@@ -5,8 +5,10 @@ goog.require('ol.proj');
goog.require('ol.proj.Projection');
goog.require('ol.source.Source');
goog.require('ol.source.Tile');
goog.require('ol.tilecoord');
goog.require('ol.tilegrid.TileGrid');
/**
* Tile source for tests that uses a EPSG:4326 based grid with 4 resolutions and
* 256x256 tiles.
@@ -40,7 +42,7 @@ ol.inherits(MockTile, ol.source.Tile);
* @inheritDoc
*/
MockTile.prototype.getTile = function(z, x, y) {
var key = this.getKeyZXY(z, x, y);
var key = ol.tilecoord.getKeyZXY(z, x, y);
if (this.tileCache.containsKey(key)) {
return /** @type {!ol.Tile} */ (this.tileCache.get(key));
} else {
+2 -3
View File
@@ -1,5 +1,3 @@
goog.require('ol.ImageTile');
goog.require('ol.TileState');
goog.require('ol.TileUrlFunction');
@@ -9,6 +7,7 @@ goog.require('ol.proj.EPSG3857');
goog.require('ol.proj.Projection');
goog.require('ol.reproj.Tile');
goog.require('ol.source.TileImage');
goog.require('ol.tilecoord');
goog.require('ol.tilegrid');
@@ -52,7 +51,7 @@ describe('ol.source.TileImage', function() {
expect(source.getKey()).to.be('');
source.getTileInternal(0, 0, -1, 1, ol.proj.get('EPSG:3857'));
expect(source.tileCache.getCount()).to.be(1);
tile = source.tileCache.get(source.getKeyZXY(0, 0, -1));
tile = source.tileCache.get(ol.tilecoord.getKeyZXY(0, 0, -1));
});
it('gets the tile from the cache', function() {
+6 -8
View File
@@ -275,15 +275,13 @@ describe('ol.source.TileWMS', function() {
});
describe('#setUrls()', function() {
it ('resets coordKeyPrefix_', function() {
var urls = ['u1', 'u2'];
var source1 = new ol.source.TileWMS({
urls: urls
it ('updates the source key', function() {
var source = new ol.source.TileWMS({
urls: ['u1', 'u2']
});
var source2 = new ol.source.TileWMS({});
expect(source2.coordKeyPrefix_).to.be.empty();
source2.setUrls(urls);
expect(source2.coordKeyPrefix_).to.equal(source1.coordKeyPrefix_);
var originalKey = source.getKey();
source.setUrls(['u3', 'u4']);
expect(source.getKey() !== originalKey).to.be(true);
});
});
});