Giving fromArray and fromString a reverseAxisOrder option. r=erilem (closes #3014)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11035 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
ahocevar
2011-01-17 09:18:21 +00:00
parent c8c8a74be7
commit 3795dbf490
2 changed files with 25 additions and 7 deletions
+11 -4
View File
@@ -615,14 +615,15 @@ OpenLayers.Bounds = OpenLayers.Class({
* *
* Parameters: * Parameters:
* str - {String}Comma-separated bounds string. (ex. <i>"5,42,10,45"</i>) * str - {String}Comma-separated bounds string. (ex. <i>"5,42,10,45"</i>)
* reverseAxisOrder - {Boolean} Does the string use reverse axis order?
* *
* Returns: * Returns:
* {<OpenLayers.Bounds>} New bounds object built from the * {<OpenLayers.Bounds>} New bounds object built from the
* passed-in String. * passed-in String.
*/ */
OpenLayers.Bounds.fromString = function(str) { OpenLayers.Bounds.fromString = function(str, reverseAxisOrder) {
var bounds = str.split(","); var bounds = str.split(",");
return OpenLayers.Bounds.fromArray(bounds); return OpenLayers.Bounds.fromArray(bounds, reverseAxisOrder);
}; };
/** /**
@@ -632,12 +633,18 @@ OpenLayers.Bounds.fromString = function(str) {
* *
* Parameters: * Parameters:
* bbox - {Array(Float)} Array of bounds values (ex. <i>[5,42,10,45]</i>) * bbox - {Array(Float)} Array of bounds values (ex. <i>[5,42,10,45]</i>)
* reverseAxisOrder - {Boolean} Does the array use reverse axis order?
* *
* Returns: * Returns:
* {<OpenLayers.Bounds>} New bounds object built from the passed-in Array. * {<OpenLayers.Bounds>} New bounds object built from the passed-in Array.
*/ */
OpenLayers.Bounds.fromArray = function(bbox) { OpenLayers.Bounds.fromArray = function(bbox, reverseAxisOrder) {
return new OpenLayers.Bounds(parseFloat(bbox[0]), return reverseAxisOrder === true ?
new OpenLayers.Bounds(parseFloat(bbox[1]),
parseFloat(bbox[0]),
parseFloat(bbox[3]),
parseFloat(bbox[2])) :
new OpenLayers.Bounds(parseFloat(bbox[0]),
parseFloat(bbox[1]), parseFloat(bbox[1]),
parseFloat(bbox[2]), parseFloat(bbox[2]),
parseFloat(bbox[3])); parseFloat(bbox[3]));
+14 -3
View File
@@ -126,7 +126,7 @@
} }
function test_Bounds_fromString(t) { function test_Bounds_fromString(t) {
t.plan( 10 ); t.plan( 12 );
bounds = OpenLayers.Bounds.fromString("1,2,3,4"); bounds = OpenLayers.Bounds.fromString("1,2,3,4");
t.ok( bounds instanceof OpenLayers.Bounds, "new OpenLayers.Bounds returns Bounds object" ); t.ok( bounds instanceof OpenLayers.Bounds, "new OpenLayers.Bounds returns Bounds object" );
t.eq( bounds.left, 1, "bounds.left is set correctly" ); t.eq( bounds.left, 1, "bounds.left is set correctly" );
@@ -134,13 +134,18 @@
t.eq( bounds.right, 3, "bounds.right is set correctly" ); t.eq( bounds.right, 3, "bounds.right is set correctly" );
t.eq( bounds.top, 4, "bounds.top is set correctly" ); t.eq( bounds.top, 4, "bounds.top is set correctly" );
// reverse axis order
var reverseBbox = bounds.toBBOX(null, true);
t.eq(reverseBbox, "2,1,4,3", "toBBOX with reverseAxisOrder set to true works as expected");
var boundsFromReverse = OpenLayers.Bounds.fromString(reverseBbox, true);
t.ok(bounds.equals(boundsFromReverse), "Bounds created from string with reverseAxisOrder are correct");
bounds = OpenLayers.Bounds.fromString("1.1,2.2,3.3,4.4"); bounds = OpenLayers.Bounds.fromString("1.1,2.2,3.3,4.4");
t.ok( bounds instanceof OpenLayers.Bounds, "new OpenLayers.Bounds returns Bounds object" ); t.ok( bounds instanceof OpenLayers.Bounds, "new OpenLayers.Bounds returns Bounds object" );
t.eq( bounds.left, 1.1, "bounds.left is set correctly" ); t.eq( bounds.left, 1.1, "bounds.left is set correctly" );
t.eq( bounds.bottom, 2.2, "bounds.bottom is set correctly" ); t.eq( bounds.bottom, 2.2, "bounds.bottom is set correctly" );
t.eq( bounds.right, 3.3, "bounds.right is set correctly" ); t.eq( bounds.right, 3.3, "bounds.right is set correctly" );
t.eq( bounds.top, 4.4, "bounds.top is set correctly" ); t.eq( bounds.top, 4.4, "bounds.top is set correctly" );
} }
function test_Bounds_getSize(t) { function test_Bounds_getSize(t) {
@@ -358,7 +363,7 @@
} }
function test_Bounds_fromArray(t) { function test_Bounds_fromArray(t) {
t.plan( 5 ); t.plan( 7 );
var bbox = [1,2,3,4]; var bbox = [1,2,3,4];
bounds = OpenLayers.Bounds.fromArray(bbox); bounds = OpenLayers.Bounds.fromArray(bbox);
@@ -367,6 +372,12 @@
t.eq( bounds.bottom, 2, "bounds.bottom is set correctly" ); t.eq( bounds.bottom, 2, "bounds.bottom is set correctly" );
t.eq( bounds.right, 3, "bounds.right is set correctly" ); t.eq( bounds.right, 3, "bounds.right is set correctly" );
t.eq( bounds.top, 4, "bounds.top is set correctly" ); t.eq( bounds.top, 4, "bounds.top is set correctly" );
// reverse axis order
var reverseBbox = bounds.toArray(true);
t.eq(reverseBbox, [2,1,4,3], "toArray with reverseAxisOrder set to true works as expected");
var boundsFromReverse = OpenLayers.Bounds.fromArray(reverseBbox, true);
t.ok(bounds.equals(boundsFromReverse), "Bounds created from array with reverseAxisOrder are correct");
} }
function test_Bounds_fromSize(t) { function test_Bounds_fromSize(t) {