diff --git a/src/ol/View.js b/src/ol/View.js index a870152ac3..5ee7b4d4a4 100644 --- a/src/ol/View.js +++ b/src/ol/View.js @@ -921,7 +921,7 @@ class View extends BaseObject { * @return {import("./extent.js").Extent} Extent. */ calculateExtentInternal(opt_size) { - const size = opt_size || this.getViewportSize_(); + const size = opt_size || this.getViewportSizeMinusPadding_(); const center = /** @type {!import("./coordinate.js").Coordinate} */ (this.getCenterInternal()); assert(center, 1); // The view center is not defined const resolution = /** @type {!number} */ (this.getResolution()); diff --git a/test/spec/ol/view.test.js b/test/spec/ol/view.test.js index ea8d2852ee..6ec77ea4a5 100644 --- a/test/spec/ol/view.test.js +++ b/test/spec/ol/view.test.js @@ -1622,6 +1622,21 @@ describe('ol.View', function () { expect(extent[2]).to.roughlyEqual(51200, 1e-9); expect(extent[3]).to.roughlyEqual(25600, 1e-9); }); + it('works with a view padding', function () { + const view = new View({ + resolutions: [1], + zoom: 0, + center: [0, 0], + padding: [10, 20, 30, 40], + }); + + let extent = view.calculateExtent(); + expect(extent).to.eql([-20, -30, 20, 30]); + view.padding = [0, 0, 0, 0]; + view.setCenter([0, 0]); + extent = view.calculateExtent(); + expect(extent).to.eql([-50, -50, 50, 50]); + }); }); describe('#getViewportSize_()', function () {