Merge pull request #110 from ahocevar/no-pan-on-invalid-zoom

No pan on invalid zoom. r=@tschaub
This commit is contained in:
ahocevar
2011-12-16 08:43:03 -08:00
2 changed files with 17 additions and 4 deletions

View File

@@ -1749,7 +1749,12 @@ OpenLayers.Map = OpenLayers.Class({
}
}
if (this.baseLayer.wrapDateLine) {
var requestedZoom = zoom;
zoom = this.adjustZoom(zoom);
if (zoom !== requestedZoom) {
// zoom was adjusted, so keep old lonlat to avoid panning
lonlat = this.getCenter();
}
}
// dragging is false by default
var dragging = options.dragging || this.dragging;

View File

@@ -380,11 +380,13 @@
*/
function test_Map_isValidZoomLevel(t) {
t.plan(4);
t.plan(5);
var map = new OpenLayers.Map("map");
map.addLayer(new OpenLayers.Layer(null, {
isBaseLayer: true, numZoomLevels: 19
}))
isBaseLayer: true, wrapDateLine: true, numZoomLevels: 19
}));
map.zoomToMaxExtent();
var valid;
valid = OpenLayers.Map.prototype.isValidZoomLevel.apply(map, [-1]);
@@ -398,6 +400,9 @@
valid = OpenLayers.Map.prototype.isValidZoomLevel.apply(map, [19]);
t.eq(valid, false, "19 is not a valid zoomLevel");
map.moveTo([16, 48], 0);
t.eq(map.getCenter().toShortString(), "0, 0", "no panning when moveTo is called with invalid zoom");
map.destroy();
}
@@ -1966,7 +1971,7 @@
}
function test_adjustZoom(t) {
t.plan(3);
t.plan(4);
var map = new OpenLayers.Map({
div: 'map',
layers: [
@@ -1981,6 +1986,9 @@
t.eq(map.adjustZoom(9), 9, "valid zoom maintained");
t.eq(map.adjustZoom(1), 2, "zoom adjusted to not exceed world width");
map.moveTo([16, 48], 0);
t.eq(map.getCenter().toShortString(), "0, 0", "no panning when moveTo is called with invalid zoom");
}
</script>