diff --git a/src/ol/source/imagewmssource.js b/src/ol/source/imagewmssource.js index 0df69e3c19..e098af2960 100644 --- a/src/ol/source/imagewmssource.js +++ b/src/ol/source/imagewmssource.js @@ -198,24 +198,6 @@ ol.source.ImageWMS.prototype.getImage = pixelRatio = 1; } - var image = this.image_; - if (!goog.isNull(image) && - this.renderedRevision_ == this.getRevision() && - image.getResolution() == resolution && - image.getPixelRatio() == pixelRatio && - ol.extent.containsExtent(image.getExtent(), extent)) { - return image; - } - - var params = { - 'SERVICE': 'WMS', - 'VERSION': ol.DEFAULT_WMS_VERSION, - 'REQUEST': 'GetMap', - 'FORMAT': 'image/png', - 'TRANSPARENT': true - }; - goog.object.extend(params, this.params_); - extent = extent.slice(); var centerX = (extent[0] + extent[2]) / 2; var centerY = (extent[1] + extent[3]) / 2; @@ -240,6 +222,24 @@ ol.source.ImageWMS.prototype.getImage = extent[1] = centerY - imageResolution * height / 2; extent[3] = centerY + imageResolution * height / 2; + var image = this.image_; + if (!goog.isNull(image) && + this.renderedRevision_ == this.getRevision() && + image.getResolution() == resolution && + image.getPixelRatio() == pixelRatio && + ol.extent.containsExtent(image.getExtent(), extent)) { + return image; + } + + var params = { + 'SERVICE': 'WMS', + 'VERSION': ol.DEFAULT_WMS_VERSION, + 'REQUEST': 'GetMap', + 'FORMAT': 'image/png', + 'TRANSPARENT': true + }; + goog.object.extend(params, this.params_); + this.imageSize_[0] = width; this.imageSize_[1] = height; diff --git a/test/spec/ol/source/imagewmssource.test.js b/test/spec/ol/source/imagewmssource.test.js index 0230edd9ea..7e697e9d4e 100644 --- a/test/spec/ol/source/imagewmssource.test.js +++ b/test/spec/ol/source/imagewmssource.test.js @@ -155,6 +155,14 @@ describe('ol.source.ImageWMS', function() { expect(imageLoadFunction.calledWith(image, image.src_)).to.be(true); }); + it('returns the same image for consecutive calls with the same args', function() { + var extent = [10.01, 20, 30.01, 40]; + var source = new ol.source.ImageWMS(options); + var image1 = source.getImage(extent, resolution, pixelRatio, projection); + var image2 = source.getImage(extent, resolution, pixelRatio, projection); + expect(image1).to.equal(image2); + }); + }); describe('#getGetFeatureInfo', function() {