Fix request image size caclulation
This commit is contained in:
@@ -15,6 +15,7 @@ var layers = [
|
|||||||
source: new ol.source.ImageWMS({
|
source: new ol.source.ImageWMS({
|
||||||
url: 'https://ahocevar.com/geoserver/wms',
|
url: 'https://ahocevar.com/geoserver/wms',
|
||||||
params: {'LAYERS': 'topp:states'},
|
params: {'LAYERS': 'topp:states'},
|
||||||
|
ratio: 1,
|
||||||
serverType: 'geoserver'
|
serverType: 'geoserver'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -194,11 +194,11 @@ ol.source.ImageWMS.prototype.getImageInternal = function(extent, resolution, pix
|
|||||||
var center = ol.extent.getCenter(extent);
|
var center = ol.extent.getCenter(extent);
|
||||||
var viewWidth = Math.ceil(ol.extent.getWidth(extent) / imageResolution);
|
var viewWidth = Math.ceil(ol.extent.getWidth(extent) / imageResolution);
|
||||||
var viewHeight = Math.ceil(ol.extent.getHeight(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]);
|
[viewWidth, viewHeight]);
|
||||||
var requestWidth = Math.ceil(this.ratio_ * ol.extent.getWidth(extent) / imageResolution);
|
var requestWidth = Math.ceil(this.ratio_ * ol.extent.getWidth(extent) / imageResolution);
|
||||||
var requestHeight = Math.ceil(this.ratio_ * ol.extent.getHeight(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]);
|
[requestWidth, requestHeight]);
|
||||||
|
|
||||||
var image = this.image_;
|
var image = this.image_;
|
||||||
|
|||||||
@@ -35,6 +35,19 @@ describe('ol.source.ImageWMS', function() {
|
|||||||
expect(extentAspectRatio).to.roughlyEqual(imageAspectRatio, 1e-12);
|
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() {
|
it('requests integer WIDTH and HEIGHT', function() {
|
||||||
options.ratio = 1.5;
|
options.ratio = 1.5;
|
||||||
var source = new ol.source.ImageWMS(options);
|
var source = new ol.source.ImageWMS(options);
|
||||||
|
|||||||
Reference in New Issue
Block a user