Fix prepare/compose sequence to support icon loading

This commit is contained in:
ahocevar
2018-05-25 09:46:44 +02:00
parent d867ae1f0e
commit 4f471c786f
+17 -16
View File
@@ -143,6 +143,7 @@ CanvasImageLayerRenderer.prototype.prepareFrame = function(frameState, layerStat
projection = sourceProjection; projection = sourceProjection;
} }
} }
let skippedFeatures = this.skippedFeatures_;
const vectorRenderer = this.vectorRenderer_; const vectorRenderer = this.vectorRenderer_;
if (vectorRenderer) { if (vectorRenderer) {
const context = vectorRenderer.context; const context = vectorRenderer.context;
@@ -155,25 +156,25 @@ CanvasImageLayerRenderer.prototype.prepareFrame = function(frameState, layerStat
rotation: 0 rotation: 0
})) }))
})); }));
const skippedFeatures = Object.keys(imageFrameState.skippedFeatureUids).sort(); const newSkippedFeatures = Object.keys(imageFrameState.skippedFeatureUids).sort();
if (vectorRenderer.prepareFrame(imageFrameState, layerState) && image = new ImageCanvas(renderedExtent, viewResolution, pixelRatio, context.canvas, function(callback) {
(vectorRenderer.replayGroupChanged || if (vectorRenderer.prepareFrame(imageFrameState, layerState) &&
!equals(skippedFeatures, this.skippedFeatures_))) { (vectorRenderer.replayGroupChanged ||
context.canvas.width = imageFrameState.size[0] * pixelRatio; !equals(skippedFeatures, newSkippedFeatures))) {
context.canvas.height = imageFrameState.size[1] * pixelRatio; context.canvas.width = imageFrameState.size[0] * pixelRatio;
vectorRenderer.compose(imageFrameState, layerState, context); context.canvas.height = imageFrameState.size[1] * pixelRatio;
this.image_ = new ImageCanvas(renderedExtent, viewResolution, pixelRatio, context.canvas); vectorRenderer.compose(context, imageFrameState, layerState);
this.skippedFeatures_ = skippedFeatures; skippedFeatures = newSkippedFeatures;
} callback();
}
});
} else { } else {
image = imageSource.getImage( image = imageSource.getImage(
renderedExtent, viewResolution, pixelRatio, projection); renderedExtent, viewResolution, pixelRatio, projection);
if (image) { }
const loaded = this.loadImage(image); if (image && this.loadImage(image)) {
if (loaded) { this.image_ = image;
this.image_ = image; this.skippedFeatures_ = skippedFeatures;
}
}
} }
} }