Support fractional zoom levels in ol.View#getZoom and #setZoom

This commit is contained in:
Andreas Hocevar
2016-08-02 22:52:57 +02:00
parent 3d57ea45cb
commit 98fbfe4b67
3 changed files with 67 additions and 29 deletions

View File

@@ -323,17 +323,20 @@ describe('ol.View', function() {
view.setResolution(undefined);
expect(view.getZoom()).to.be(undefined);
view.setResolution(511);
view.setResolution(513);
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(100);
expect(view.getZoom()).to.roughlyEqual(2.35614, 1e-5);
view.setResolution(65);
expect(view.getZoom()).to.be(undefined);
expect(view.getZoom()).to.roughlyEqual(2.97763, 1e-5);
view.setResolution(64);
expect(view.getZoom()).to.be(3);
view.setResolution(16);
expect(view.getZoom()).to.be(5);
@@ -341,6 +344,28 @@ describe('ol.View', function() {
view.setResolution(15);
expect(view.getZoom()).to.be(undefined);
});
it('works for resolution arrays with variable zoom factors', function() {
var view = new ol.View({
resolutions: [10, 5, 2, 1]
});
view.setZoom(1);
expect(view.getZoom()).to.be(1);
view.setZoom(1.3);
expect(view.getZoom()).to.be(1.3);
view.setZoom(2);
expect(view.getZoom()).to.be(2);
view.setZoom(2.7);
expect(view.getZoom()).to.be(2.7);
view.setZoom(3);
expect(view.getZoom()).to.be(3);
});
});
describe('#getZoom() - constrained', function() {
@@ -359,6 +384,9 @@ describe('ol.View', function() {
view.setZoom(15);
expect(view.getZoom()).to.be(15);
view.setZoom(15.3);
expect(view.getZoom()).to.be(15.3);
view.setZoom(20);
expect(view.getZoom()).to.be(20);