Skip to content

Commit

Permalink
Merge pull request #858 from elemoine/getzoom
Browse files Browse the repository at this point in the history
Add ol.View2D#getZoom
  • Loading branch information
Éric Lemoine committed Jul 11, 2013
2 parents d7e8382 + 3e4d39b commit 757ccf1
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/ol/view2d.exports
Expand Up @@ -4,4 +4,5 @@
@exportProperty ol.View2D.prototype.constrainRotation
@exportProperty ol.View2D.prototype.fitExtent
@exportProperty ol.View2D.prototype.getView2D
@exportProperty ol.View2D.prototype.getZoom
@exportProperty ol.View2D.prototype.setZoom
25 changes: 25 additions & 0 deletions src/ol/view2d.js
Expand Up @@ -363,6 +363,31 @@ ol.View2D.prototype.getView3D = function() {
};


/**
* Get the current zoom level. Return undefined if the current
* resolution is undefined or not a "constrained resolution".
* @return {number|undefined} Zoom.
*/
ol.View2D.prototype.getZoom = function() {
var zoom;
var resolution = this.getResolution();

if (goog.isDef(resolution)) {
var res, z = 0;
do {
res = this.constrainResolution(this.maxResolution_, z);
if (res == resolution) {
zoom = z;
break;
}
++z;
} while (res > this.minResolution_);
}

return zoom;
};


/**
* Fit the given extent based on the given map size.
* @param {ol.Extent} extent Extent.
Expand Down
32 changes: 32 additions & 0 deletions test/spec/ol/view2d.test.js
Expand Up @@ -70,6 +70,38 @@ describe('ol.View2D', function() {
});

});

describe('#getZoom', function() {
var view;
beforeEach(function() {
view = new ol.View2D({
resolutions: [512, 256, 128, 64, 32, 16]
});
});

it('returns correct zoom levels', function() {
view.setResolution(undefined);
expect(view.getZoom()).to.be(undefined);

view.setResolution(511);
expect(view.getZoom()).to.be(undefined);

view.setResolution(512);
expect(view.getZoom()).to.be(0);

view.setResolution(64);
expect(view.getZoom()).to.be(3);

view.setResolution(65);
expect(view.getZoom()).to.be(undefined);

view.setResolution(16);
expect(view.getZoom()).to.be(5);

view.setResolution(15);
expect(view.getZoom()).to.be(undefined);
});
});
});

goog.require('ol.View2D');

0 comments on commit 757ccf1

Please sign in to comment.