When the resolution does not change, remove backbuffer tile by tile
This change introduces a new 'replace' mode for tile transitions: when the resolution does not change, which happens when mergeNewParams is called, the tile will be marked with the .olTileReplace class. If this class sets the tile's imgDiv display to 'none', the backbuffer for the tile will immediately be removed when the tile is loaded.
This commit is contained in:
+27
-1
@@ -526,7 +526,8 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
imgDiv: {className: ''}
|
||||
}
|
||||
|
||||
g_registered = {};
|
||||
@@ -1118,6 +1119,31 @@
|
||||
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
function test_backbuffer_replace(t) {
|
||||
t.plan(6);
|
||||
var map = new OpenLayers.Map('map');
|
||||
var layer = new OpenLayers.Layer.WMS('', '../../img/blank.gif');
|
||||
map.addLayer(layer);
|
||||
map.zoomToMaxExtent();
|
||||
|
||||
t.delay_call(1, function() {
|
||||
layer.mergeNewParams({foo: 'bar'});
|
||||
var tile = layer.grid[1][1];
|
||||
t.ok(OpenLayers.Element.hasClass(tile.imgDiv, 'olTileReplacing'), 'tile is marked for being replaced');
|
||||
t.ok(document.getElementById(tile.id + '_bb'), 'backbuffer created for tile');
|
||||
tile.onImageLoad();
|
||||
t.ok(!OpenLayers.Element.hasClass(tile.imgDiv, 'olTileReplacing'), 'tile replaced, no longer marked');
|
||||
t.ok(!document.getElementById(tile.id + '_bb'), 'backbuffer removed for tile');
|
||||
|
||||
layer.mergeNewParams({foo: 'baz'});
|
||||
tile = layer.grid[1][1];
|
||||
tile.imgDiv.style.display = 'block';
|
||||
tile.onImageLoad();
|
||||
t.ok(!OpenLayers.Element.hasClass(tile.imgDiv, 'olTileReplacing'), 'tile replaced, no longer marked');
|
||||
t.ok(document.getElementById(tile.id + '_bb'), 'backbuffer not removed for visible tile');
|
||||
});
|
||||
}
|
||||
|
||||
function test_singleTile_move_and_zoom(t) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user