Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c76c445e43 | ||
|
|
3bba8ef061 | ||
|
|
a699cc348b | ||
|
|
f010f7b9c1 |
@@ -4,4 +4,4 @@ The v4.6.2 release fixes a regression that could cause tremendous amounts of unn
|
|||||||
|
|
||||||
## Fixes
|
## Fixes
|
||||||
|
|
||||||
* [#7546](Do not request features for wrapped extent) - Do not request features for wrapped extent ([@ahocevar](https://github.com/ahocevar))
|
* [#7546](https://github.com/openlayers/openlayers/pull/7546) - Do not request features for wrapped extent ([@ahocevar](https://github.com/ahocevar))
|
||||||
|
|||||||
7
changelog/v4.6.3.md
Normal file
7
changelog/v4.6.3.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 4.6.3
|
||||||
|
|
||||||
|
The v4.6.3 release fixes a performance issue when `renderMode: 'image'` is set on an `ol.layer.Vector`.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
* [#7554](https://github.com/openlayers/openlayers/pull/7554) - Only compose image vector frame when the replay group has changed ([@ahocevar](https://github.com/ahocevar))
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "openlayers",
|
"name": "openlayers",
|
||||||
"version": "4.6.2",
|
"version": "4.6.3",
|
||||||
"description": "Build tools and sources for developing OpenLayers based mapping applications",
|
"description": "Build tools and sources for developing OpenLayers based mapping applications",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"map",
|
"map",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ol",
|
"name": "ol",
|
||||||
"version": "4.6.2",
|
"version": "4.6.3",
|
||||||
"description": "OpenLayers as ES2015 modules",
|
"description": "OpenLayers as ES2015 modules",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"module": "index.js",
|
"module": "index.js",
|
||||||
|
|||||||
@@ -127,8 +127,9 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame = function(frameState, laye
|
|||||||
projection = sourceProjection;
|
projection = sourceProjection;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.vectorRenderer_) {
|
var vectorRenderer = this.vectorRenderer_;
|
||||||
var context = this.vectorRenderer_.context;
|
if (vectorRenderer) {
|
||||||
|
var context = vectorRenderer.context;
|
||||||
var imageFrameState = /** @type {olx.FrameState} */ (ol.obj.assign({}, frameState, {
|
var imageFrameState = /** @type {olx.FrameState} */ (ol.obj.assign({}, frameState, {
|
||||||
size: [
|
size: [
|
||||||
ol.extent.getWidth(renderedExtent) / viewResolution,
|
ol.extent.getWidth(renderedExtent) / viewResolution,
|
||||||
@@ -138,12 +139,12 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame = function(frameState, laye
|
|||||||
rotation: 0
|
rotation: 0
|
||||||
}))
|
}))
|
||||||
}));
|
}));
|
||||||
if (this.vectorRenderer_.prepareFrame(imageFrameState, layerState)) {
|
if (vectorRenderer.prepareFrame(imageFrameState, layerState) && vectorRenderer.replayGroupChanged) {
|
||||||
context.canvas.width = imageFrameState.size[0] * pixelRatio;
|
context.canvas.width = imageFrameState.size[0] * pixelRatio;
|
||||||
context.canvas.height = imageFrameState.size[1] * pixelRatio;
|
context.canvas.height = imageFrameState.size[1] * pixelRatio;
|
||||||
this.vectorRenderer_.composeFrame(imageFrameState, layerState, context);
|
vectorRenderer.composeFrame(imageFrameState, layerState, context);
|
||||||
}
|
|
||||||
this.image_ = new ol.ImageCanvas(renderedExtent, viewResolution, pixelRatio, context.canvas);
|
this.image_ = new ol.ImageCanvas(renderedExtent, viewResolution, pixelRatio, context.canvas);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
image = imageSource.getImage(
|
image = imageSource.getImage(
|
||||||
renderedExtent, viewResolution, pixelRatio, projection);
|
renderedExtent, viewResolution, pixelRatio, projection);
|
||||||
|
|||||||
@@ -69,6 +69,12 @@ ol.renderer.canvas.VectorLayer = function(vectorLayer) {
|
|||||||
*/
|
*/
|
||||||
this.replayGroup_ = null;
|
this.replayGroup_ = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A new replay group had to be created by `prepareFrame()`
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
this.replayGroupChanged = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {CanvasRenderingContext2D}
|
* @type {CanvasRenderingContext2D}
|
||||||
*/
|
*/
|
||||||
@@ -343,6 +349,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = function(frameState, lay
|
|||||||
this.renderedRevision_ == vectorLayerRevision &&
|
this.renderedRevision_ == vectorLayerRevision &&
|
||||||
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
||||||
ol.extent.containsExtent(this.renderedExtent_, extent)) {
|
ol.extent.containsExtent(this.renderedExtent_, extent)) {
|
||||||
|
this.replayGroupChanged = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,6 +407,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = function(frameState, lay
|
|||||||
this.renderedExtent_ = extent;
|
this.renderedExtent_ = extent;
|
||||||
this.replayGroup_ = replayGroup;
|
this.replayGroup_ = replayGroup;
|
||||||
|
|
||||||
|
this.replayGroupChanged = true;
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -290,6 +290,14 @@ describe('ol.renderer.canvas.VectorLayer', function() {
|
|||||||
], buffer));
|
], buffer));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('sets replayGroupChanged correctly', function() {
|
||||||
|
frameState.extent = [-10000, -10000, 10000, 10000];
|
||||||
|
renderer.prepareFrame(frameState, {});
|
||||||
|
expect(renderer.replayGroupChanged).to.be(true);
|
||||||
|
renderer.prepareFrame(frameState, {});
|
||||||
|
expect(renderer.replayGroupChanged).to.be(false);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user