Cache the image extent

This commit is contained in:
rattai
2015-08-05 12:59:41 -04:00
parent e49ce543a4
commit eb2a30e461
+27 -17
View File
@@ -92,6 +92,12 @@ ol.source.ImageWMS = function(opt_options) {
*/ */
this.image_ = null; this.image_ = null;
/**
* @private
* @type {ol.Extent}
*/
this.imageExtent_ = null;
/** /**
* @private * @private
* @type {ol.Size} * @type {ol.Size}
@@ -198,6 +204,24 @@ ol.source.ImageWMS.prototype.getImage =
pixelRatio = 1; 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(); extent = extent.slice();
var centerX = (extent[0] + extent[2]) / 2; var centerX = (extent[0] + extent[2]) / 2;
var centerY = (extent[1] + extent[3]) / 2; var centerY = (extent[1] + extent[3]) / 2;
@@ -222,23 +246,7 @@ ol.source.ImageWMS.prototype.getImage =
extent[1] = centerY - imageResolution * height / 2; extent[1] = centerY - imageResolution * height / 2;
extent[3] = centerY + imageResolution * height / 2; extent[3] = centerY + imageResolution * height / 2;
var image = this.image_; this.imageExtent_ = extent;
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_[0] = width;
this.imageSize_[1] = height; this.imageSize_[1] = height;
@@ -362,6 +370,7 @@ ol.source.ImageWMS.prototype.setUrl = function(url) {
if (url != this.url_) { if (url != this.url_) {
this.url_ = url; this.url_ = url;
this.image_ = null; this.image_ = null;
this.imageExtent_ = null;
this.changed(); this.changed();
} }
}; };
@@ -376,6 +385,7 @@ ol.source.ImageWMS.prototype.updateParams = function(params) {
goog.object.extend(this.params_, params); goog.object.extend(this.params_, params);
this.updateV13_(); this.updateV13_();
this.image_ = null; this.image_ = null;
this.imageExtent_ = null;
this.changed(); this.changed();
}; };