Create intermediate canvas when resolutions have changed

This commit is contained in:
Andreas Hocevar
2017-05-10 11:43:21 +02:00
parent 735ab45480
commit 50615557d9
3 changed files with 14 additions and 6 deletions

View File

@@ -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) {

View File

@@ -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'),

View File

@@ -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,