Merge pull request #13120 from ahocevar/view-properties

Populate view's object properties
This commit is contained in:
Andreas Hocevar
2021-12-16 22:09:08 +01:00
committed by GitHub
2 changed files with 27 additions and 16 deletions
+8 -14
View File
@@ -416,10 +416,11 @@ class View extends BaseObject {
* @param {ViewOptions} options View options. * @param {ViewOptions} options View options.
*/ */
applyOptions_(options) { applyOptions_(options) {
/** const properties = assign({}, options);
* @type {Object<string, *>} for (const key in ViewProperty) {
*/ delete properties[key];
const properties = {}; }
this.setProperties(properties, true);
const resolutionConstraintInfo = createResolutionConstraint(options); const resolutionConstraintInfo = createResolutionConstraint(options);
@@ -482,14 +483,6 @@ class View extends BaseObject {
} else if (options.zoom !== undefined) { } else if (options.zoom !== undefined) {
this.setZoom(options.zoom); this.setZoom(options.zoom);
} }
this.setProperties(properties);
/**
* @private
* @type {ViewOptions}
*/
this.options_ = options;
} }
/** /**
@@ -531,7 +524,7 @@ class View extends BaseObject {
* @return {ViewOptions} New options updated with the current view state. * @return {ViewOptions} New options updated with the current view state.
*/ */
getUpdatedOptions_(newOptions) { getUpdatedOptions_(newOptions) {
const options = assign({}, this.options_); const options = this.getProperties();
// preserve resolution (or zoom) // preserve resolution (or zoom)
if (options.resolution !== undefined) { if (options.resolution !== undefined) {
@@ -973,7 +966,7 @@ class View extends BaseObject {
* @return {boolean} Resolution constraint is set * @return {boolean} Resolution constraint is set
*/ */
getConstrainResolution() { getConstrainResolution() {
return this.options_.constrainResolution; return this.get('constrainResolution');
} }
/** /**
@@ -1736,6 +1729,7 @@ class View extends BaseObject {
} }
if (this.get(ViewProperty.RESOLUTION) !== newResolution) { if (this.get(ViewProperty.RESOLUTION) !== newResolution) {
this.set(ViewProperty.RESOLUTION, newResolution); this.set(ViewProperty.RESOLUTION, newResolution);
this.set('zoom', this.getZoom(), true);
} }
if ( if (
!newCenter || !newCenter ||
+19 -2
View File
@@ -617,6 +617,23 @@ describe('ol/View', function () {
expect(options.zoom).to.eql(10); expect(options.zoom).to.eql(10);
}); });
it('returns the current properties with getProperties()', function () {
const view = new View({
center: [0, 0],
minZoom: 2,
zoom: 10,
});
view.setZoom(8);
view.setCenter([1, 2]);
view.setRotation(1);
const options = view.getProperties();
expect(options.minZoom).to.eql(2);
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 () { it('applies the current zoom', function () {
const view = new View({ const view = new View({
center: [0, 0], center: [0, 0],
@@ -1874,8 +1891,8 @@ describe('ol/View', function () {
expect(view.getCenter()[1]).to.be(1500); expect(view.getCenter()[1]).to.be(1500);
}); });
it('fits correctly to the extent when a view extent is configured', function () { it('fits correctly to the extent when a view extent is configured', function () {
view.options_.extent = [1500, 0, 2500, 10000]; view.set('extent', [1500, 0, 2500, 10000]);
view.applyOptions_(view.options_); view.applyOptions_(view.getProperties());
view.fit([1000, 1000, 2000, 2000]); view.fit([1000, 1000, 2000, 2000]);
expect(view.calculateExtent()).eql([1500, 1000, 2500, 2000]); expect(view.calculateExtent()).eql([1500, 1000, 2500, 2000]);
}); });