Remove images from dom when replacing them with cached images
This commit is contained in:
@@ -330,6 +330,9 @@ OpenLayers.TileManager = OpenLayers.Class({
|
|||||||
// only use image from cache if it is not on a layer already
|
// only use image from cache if it is not on a layer already
|
||||||
if (img && (!img.parentNode ||
|
if (img && (!img.parentNode ||
|
||||||
OpenLayers.Element.hasClass(img.parentNode, 'olBackBuffer'))) {
|
OpenLayers.Element.hasClass(img.parentNode, 'olBackBuffer'))) {
|
||||||
|
if (tile.imgDiv) {
|
||||||
|
tile.layer.div.removeChild(tile.imgDiv);
|
||||||
|
}
|
||||||
tile.imgDiv = img;
|
tile.imgDiv = img;
|
||||||
OpenLayers.Util.removeItem(this.tileCacheIndex, tile.url);
|
OpenLayers.Util.removeItem(this.tileCacheIndex, tile.url);
|
||||||
this.tileCacheIndex.push(tile.url);
|
this.tileCacheIndex.push(tile.url);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function test_manageTileCache(t) {
|
function test_manageTileCache(t) {
|
||||||
t.plan(9);
|
t.plan(10);
|
||||||
|
|
||||||
var tileManager = new OpenLayers.TileManager({
|
var tileManager = new OpenLayers.TileManager({
|
||||||
cacheSize: 12
|
cacheSize: 12
|
||||||
@@ -51,6 +51,7 @@
|
|||||||
layer = new OpenLayers.Layer.WMS('WMS', '../img/blank.gif');
|
layer = new OpenLayers.Layer.WMS('WMS', '../img/blank.gif');
|
||||||
map.addLayer(layer);
|
map.addLayer(layer);
|
||||||
map.setCenter([16, 48], 9);
|
map.setCenter([16, 48], 9);
|
||||||
|
var gridSize;
|
||||||
|
|
||||||
var firstInCache, sharedTile;
|
var firstInCache, sharedTile;
|
||||||
t.delay_call(2, function() {
|
t.delay_call(2, function() {
|
||||||
@@ -59,6 +60,7 @@
|
|||||||
t.ok(tileManager.tileCache[layer.grid[1][2].url] === layer.grid[1][2].imgDiv, "correct object cached");
|
t.ok(tileManager.tileCache[layer.grid[1][2].url] === layer.grid[1][2].imgDiv, "correct object cached");
|
||||||
firstInCache = tileManager.tileCache[tileManager.tileCacheIndex[0]];
|
firstInCache = tileManager.tileCache[tileManager.tileCacheIndex[0]];
|
||||||
sharedTile = tileManager.tileCache[tileManager.tileCacheIndex[11]];
|
sharedTile = tileManager.tileCache[tileManager.tileCacheIndex[11]];
|
||||||
|
gridSize = layer.div.childNodes.length;
|
||||||
map.setCenter([17, 47]);
|
map.setCenter([17, 47]);
|
||||||
});
|
});
|
||||||
t.delay_call(4, function() {
|
t.delay_call(4, function() {
|
||||||
@@ -72,6 +74,7 @@
|
|||||||
t.delay_call(6, function() {
|
t.delay_call(6, function() {
|
||||||
t.ok(!(firstInCache.getAttribute("src") in tileManager.tileCache), "old tile discarded");
|
t.ok(!(firstInCache.getAttribute("src") in tileManager.tileCache), "old tile discarded");
|
||||||
t.ok(sharedTile.getAttribute("src") in tileManager.tileCache, "shared tile still in cache");
|
t.ok(sharedTile.getAttribute("src") in tileManager.tileCache, "shared tile still in cache");
|
||||||
|
t.eq(layer.div.childNodes.length, gridSize, 'no unused images left in dom');
|
||||||
map.destroy();
|
map.destroy();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user