Create intermediate canvas when resolutions have changed
This commit is contained in:
@@ -170,13 +170,16 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(frameState, layer
|
||||
}
|
||||
}
|
||||
|
||||
var renderedResolution = tileResolution * pixelRatio / tilePixelRatio * oversampling;
|
||||
var hints = frameState.viewHints;
|
||||
if (!(this.renderedResolution && Date.now() - frameState.time > 16 &&
|
||||
(hints[ol.ViewHint.ANIMATING] || hints[ol.ViewHint.INTERACTING])) &&
|
||||
(newTiles || !(this.renderedExtent_ &&
|
||||
ol.extent.containsExtent(this.renderedExtent_, extent)) ||
|
||||
this.renderedRevision != sourceRevision) ||
|
||||
oversampling != this.oversampling_) {
|
||||
var animatingOrInteracting = hints[ol.ViewHint.ANIMATING] || hints[ol.ViewHint.INTERACTING];
|
||||
if (!(Date.now() - frameState.time > 16 && animatingOrInteracting) && (
|
||||
newTiles ||
|
||||
!(this.renderedExtent_ && ol.extent.containsExtent(this.renderedExtent_, extent)) ||
|
||||
this.renderedRevision != sourceRevision ||
|
||||
oversampling != this.oversampling_ ||
|
||||
!animatingOrInteracting && renderedResolution != this.renderedResolution
|
||||
)) {
|
||||
|
||||
var context = this.context;
|
||||
if (context) {
|
||||
|
||||
@@ -79,6 +79,8 @@ describe('ol.renderer.canvas.TileLayer', function() {
|
||||
var renderer = new ol.renderer.canvas.TileLayer(layer);
|
||||
renderer.renderedTiles = [];
|
||||
var frameState = {
|
||||
viewHints: [],
|
||||
time: Date.now(),
|
||||
viewState: {
|
||||
center: [10, 5],
|
||||
projection: ol.proj.get('EPSG:3857'),
|
||||
|
||||
@@ -170,6 +170,9 @@ describe('ol.renderer.canvas.VectorTileLayer', function() {
|
||||
var proj = ol.proj.get('EPSG:3857');
|
||||
var frameState = {
|
||||
extent: proj.getExtent(),
|
||||
pixelRatio: 1,
|
||||
time: Date.now(),
|
||||
viewHints: [],
|
||||
viewState: {
|
||||
center: [0, 0],
|
||||
resolution: 156543.03392804097,
|
||||
|
||||
Reference in New Issue
Block a user