Fix request image size caclulation

This commit is contained in:
Andreas Hocevar
2017-03-23 22:26:58 +01:00
parent 57e67e62bb
commit 28fb57ebeb
3 changed files with 16 additions and 2 deletions

View File

@@ -15,6 +15,7 @@ var layers = [
source: new ol.source.ImageWMS({
url: 'https://ahocevar.com/geoserver/wms',
params: {'LAYERS': 'topp:states'},
ratio: 1,
serverType: 'geoserver'
})
})

View File

@@ -194,11 +194,11 @@ ol.source.ImageWMS.prototype.getImageInternal = function(extent, resolution, pix
var center = ol.extent.getCenter(extent);
var viewWidth = Math.ceil(ol.extent.getWidth(extent) / imageResolution);
var viewHeight = Math.ceil(ol.extent.getHeight(extent) / imageResolution);
var viewExtent = ol.extent.getForViewAndSize(center, resolution, 0,
var viewExtent = ol.extent.getForViewAndSize(center, imageResolution, 0,
[viewWidth, viewHeight]);
var requestWidth = Math.ceil(this.ratio_ * ol.extent.getWidth(extent) / imageResolution);
var requestHeight = Math.ceil(this.ratio_ * ol.extent.getHeight(extent) / imageResolution);
var requestExtent = ol.extent.getForViewAndSize(center, resolution, 0,
var requestExtent = ol.extent.getForViewAndSize(center, imageResolution, 0,
[requestWidth, requestHeight]);
var image = this.image_;

View File

@@ -35,6 +35,19 @@ describe('ol.source.ImageWMS', function() {
expect(extentAspectRatio).to.roughlyEqual(imageAspectRatio, 1e-12);
});
it('uses correct WIDTH and HEIGHT for HiDPI devices', function() {
pixelRatio = 2;
options.serverType = 'geoserver';
var source = new ol.source.ImageWMS(options);
var image = source.getImage(extent, resolution, pixelRatio, projection);
var uri = new URL(image.src_);
var queryData = uri.searchParams;
var width = Number(queryData.get('WIDTH'));
var height = Number(queryData.get('HEIGHT'));
expect(width).to.be(400);
expect(height).to.be(400);
});
it('requests integer WIDTH and HEIGHT', function() {
options.ratio = 1.5;
var source = new ol.source.ImageWMS(options);