Uncache images that are no longer valid
When a layer sets a cached image's className to something else than .olTileImage (e.g. by setting .olTileReplacing), we should not keep the image in the cache any more, because it may no longer be valid.
This commit is contained in:
@@ -315,9 +315,16 @@ OpenLayers.TileManager = OpenLayers.Class({
|
|||||||
var tile = evt.object;
|
var tile = evt.object;
|
||||||
var queued = false;
|
var queued = false;
|
||||||
var layer = tile.layer;
|
var layer = tile.layer;
|
||||||
|
var url = layer.getURL(tile.bounds);
|
||||||
|
var img = this.tileCache[url];
|
||||||
|
if (img && img.className !== 'olTileImage') {
|
||||||
|
// cached image no longer valid, e.g. because we're olTileReplacing
|
||||||
|
delete this.tileCache[url];
|
||||||
|
OpenLayers.Util.removeItem(this.tileCacheIndex, url);
|
||||||
|
img = null;
|
||||||
|
}
|
||||||
// queue only if image with same url not cached already
|
// queue only if image with same url not cached already
|
||||||
if (layer.url && (layer.async ||
|
if (layer.url && (layer.async || !img)) {
|
||||||
!this.tileCache[layer.getURL(tile.bounds)])) {
|
|
||||||
// add to queue only if not in queue already
|
// add to queue only if not in queue already
|
||||||
var tileQueue = this.tileQueue[layer.map.id];
|
var tileQueue = this.tileQueue[layer.map.id];
|
||||||
if (!~OpenLayers.Util.indexOf(tileQueue, tile)) {
|
if (!~OpenLayers.Util.indexOf(tileQueue, tile)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user