Cache the image extent
This commit is contained in:
@@ -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();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user