Only shift extents that cross once.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user