View / apply constraints when an interaction starts

Previously, an interaction could begin while target values
(center/resolution) were out of the allowed range, causing a
glitch where the view zoom/position would jump suddenly.
This commit is contained in:
Olivier Guyot
2019-04-05 10:26:23 +02:00
parent dfa8506549
commit 0f73f16cfa
4 changed files with 52 additions and 0 deletions

View File

@@ -1801,6 +1801,52 @@ describe('ol.View', function() {
});
});
describe('does not start unexpected animations during interaction', function() {
let map;
beforeEach(function() {
map = new Map({
target: createMapDiv(512, 256)
});
});
afterEach(function() {
disposeMap(map);
});
it('works when initialized with #setCenter() and #setZoom()', function(done) {
const view = map.getView();
let callCount = 0;
view.on('change:resolution', function() {
++callCount;
});
view.setCenter([0, 0]);
view.setZoom(0);
view.beginInteraction();
view.endInteraction();
setTimeout(function() {
expect(callCount).to.be(1);
done();
}, 500);
});
it('works when initialized with #animate()', function(done) {
const view = map.getView();
let callCount = 0;
view.on('change:resolution', function() {
++callCount;
});
view.animate({
center: [0, 0],
zoom: 0
});
view.beginInteraction();
view.endInteraction();
setTimeout(function() {
expect(callCount).to.be(1);
done();
}, 500);
});
});
describe('ol.View.isNoopAnimation()', function() {
const cases = [{