From eb2a30e46142394d3382ade61bfcedff62aef4f7 Mon Sep 17 00:00:00 2001 From: rattai Date: Wed, 5 Aug 2015 12:59:41 -0400 Subject: [PATCH] Cache the image extent --- src/ol/source/imagewmssource.js | 44 ++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/ol/source/imagewmssource.js b/src/ol/source/imagewmssource.js index e098af2960..be67d86b89 100644 --- a/src/ol/source/imagewmssource.js +++ b/src/ol/source/imagewmssource.js @@ -92,6 +92,12 @@ ol.source.ImageWMS = function(opt_options) { */ this.image_ = null; + /** + * @private + * @type {ol.Extent} + */ + this.imageExtent_ = null; + /** * @private * @type {ol.Size} @@ -198,6 +204,24 @@ 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(), this.imageExtent_)) { + 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; @@ -222,23 +246,7 @@ 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.imageExtent_ = extent; this.imageSize_[0] = width; this.imageSize_[1] = height; @@ -362,6 +370,7 @@ ol.source.ImageWMS.prototype.setUrl = function(url) { if (url != this.url_) { this.url_ = url; this.image_ = null; + this.imageExtent_ = null; this.changed(); } }; @@ -376,6 +385,7 @@ ol.source.ImageWMS.prototype.updateParams = function(params) { goog.object.extend(this.params_, params); this.updateV13_(); this.image_ = null; + this.imageExtent_ = null; this.changed(); };