diff --git a/src/ol/View.js b/src/ol/View.js index 72f099edd0..c09bf01cd3 100644 --- a/src/ol/View.js +++ b/src/ol/View.js @@ -480,8 +480,7 @@ class View extends BaseObject { ); if (options.resolution !== undefined) { this.setResolution(options.resolution); - } - if (options.zoom !== undefined) { + } else if (options.zoom !== undefined) { this.setZoom(options.zoom); } } @@ -530,8 +529,7 @@ class View extends BaseObject { // preserve resolution (or zoom) if (options.resolution !== undefined) { options.resolution = this.getResolution(); - } - if (options.zoom !== undefined) { + } else { options.zoom = this.getZoom(); } @@ -1731,6 +1729,7 @@ class View extends BaseObject { } if (this.get(ViewProperty.RESOLUTION) !== newResolution) { this.set(ViewProperty.RESOLUTION, newResolution); + this.set('zoom', this.getZoom(), true); } if ( !newCenter || diff --git a/test/browser/spec/ol/View.test.js b/test/browser/spec/ol/View.test.js index 489217bf1b..1bb95219ca 100644 --- a/test/browser/spec/ol/View.test.js +++ b/test/browser/spec/ol/View.test.js @@ -623,11 +623,15 @@ describe('ol/View', function () { minZoom: 2, zoom: 10, }); - const options = view.getProperties(); + view.setZoom(8); + view.setCenter([1, 2]); + view.setRotation(1); - expect(options.center).to.eql([0, 0]); + const options = view.getProperties(); expect(options.minZoom).to.eql(2); - expect(options.zoom).to.eql(10); + expect(options.zoom).to.eql(8); + expect(options.center).to.eql([1, 2]); + expect(options.rotation).to.eql(1); }); it('applies the current zoom', function () {