diff --git a/lib/OpenLayers/BaseTypes/Bounds.js b/lib/OpenLayers/BaseTypes/Bounds.js index 83e0c79ded..25e4a9cbde 100644 --- a/lib/OpenLayers/BaseTypes/Bounds.js +++ b/lib/OpenLayers/BaseTypes/Bounds.js @@ -652,21 +652,24 @@ OpenLayers.Bounds = OpenLayers.Class({ if (maxExtent) { var width = maxExtent.getWidth(); + var newRight = newBounds.right - rightTolerance; + var newLeft = newBounds.left + leftTolerance; + //shift right? while (newBounds.left < maxExtent.left && - newBounds.right - rightTolerance <= maxExtent.left ) { + newRight <= maxExtent.left ) { newBounds = newBounds.add(width, 0); } //shift left? - while (newBounds.left + leftTolerance >= maxExtent.right && + while (newLeft >= maxExtent.right && newBounds.right > maxExtent.right ) { newBounds = newBounds.add(-width, 0); } - // crosses right? force left - if (newBounds.left + leftTolerance < maxExtent.right && - newBounds.right - rightTolerance > maxExtent.right) { + // crosses right only? force left + if (newLeft < maxExtent.right && newLeft > maxExtent.left && + newRight > maxExtent.right) { newBounds = newBounds.add(-width, 0); } }