Care with transform
Since the transform method takes an arbitrary transform function, new coordinates may not be ordered in the same way as the originals.
This commit is contained in:
+4
-3
@@ -94,7 +94,8 @@ ol.Extent.prototype.getTopRight = function() {
|
|||||||
* @return {ol.Extent} Extent.
|
* @return {ol.Extent} Extent.
|
||||||
*/
|
*/
|
||||||
ol.Extent.prototype.transform = function(transformFn) {
|
ol.Extent.prototype.transform = function(transformFn) {
|
||||||
var min = transformFn(new ol.Coordinate(this.minX, this.minY));
|
var a = transformFn(new ol.Coordinate(this.minX, this.minY));
|
||||||
var max = transformFn(new ol.Coordinate(this.maxX, this.maxY));
|
var b = transformFn(new ol.Coordinate(this.maxX, this.maxY));
|
||||||
return new ol.Extent(min.x, min.y, max.x, max.y);
|
return new ol.Extent(Math.min(a.x, b.x), Math.min(a.y, b.y),
|
||||||
|
Math.max(a.x, b.x), Math.max(a.y, b.y));
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -55,6 +55,23 @@ describe('ol.Extent', function() {
|
|||||||
expect(destinationExtent.maxX).toRoughlyEqual(5009377.085697311, 1e-9);
|
expect(destinationExtent.maxX).toRoughlyEqual(5009377.085697311, 1e-9);
|
||||||
expect(destinationExtent.maxY).toRoughlyEqual(8399737.889818361, 1e-9);
|
expect(destinationExtent.maxY).toRoughlyEqual(8399737.889818361, 1e-9);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('takes arbitrary function', function() {
|
||||||
|
var transformFn = function(coordinate) {
|
||||||
|
return new ol.Coordinate(-coordinate.x, -coordinate.y);
|
||||||
|
}
|
||||||
|
var sourceExtent = new ol.Extent(-15, -30, 45, 60);
|
||||||
|
var destinationExtent = sourceExtent.transform(transformFn);
|
||||||
|
expect(destinationExtent).not.toBeUndefined();
|
||||||
|
expect(destinationExtent).not.toBeNull();
|
||||||
|
// FIXME check values with third-party tool
|
||||||
|
expect(destinationExtent.minX).toBe(-45);
|
||||||
|
expect(destinationExtent.minY).toBe(-60);
|
||||||
|
expect(destinationExtent.maxX).toBe(15);
|
||||||
|
expect(destinationExtent.maxY).toBe(30);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user