Merge pull request #2313 from tschaub/transform-extent
Add ol.proj.transformExtent function.
This commit is contained in:
+22
-3
@@ -10,6 +10,7 @@ goog.require('goog.object');
|
|||||||
goog.require('ol');
|
goog.require('ol');
|
||||||
goog.require('ol.Extent');
|
goog.require('ol.Extent');
|
||||||
goog.require('ol.TransformFunction');
|
goog.require('ol.TransformFunction');
|
||||||
|
goog.require('ol.extent');
|
||||||
goog.require('ol.sphere.NORMAL');
|
goog.require('ol.sphere.NORMAL');
|
||||||
|
|
||||||
|
|
||||||
@@ -700,9 +701,11 @@ ol.proj.cloneTransform = function(input, opt_output, opt_dimension) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms a coordinate from source projection to destination projection.
|
* Transforms a coordinate from source projection to destination projection.
|
||||||
* See {@link ol.extent.applyTransform} for extent transformation.
|
* This returns a new coordinate (and does not modify the original).
|
||||||
* See the applyTransform method of {@link ol.geom.SimpleGeometry} and its
|
*
|
||||||
* subclasses for geometry transforms.
|
* See {@link ol.proj.transformExtent} for extent transformation.
|
||||||
|
* See the transform method of {@link ol.geom.Geometry} and its subclasses for
|
||||||
|
* geometry transforms.
|
||||||
*
|
*
|
||||||
* @param {ol.Coordinate} coordinate Coordinate.
|
* @param {ol.Coordinate} coordinate Coordinate.
|
||||||
* @param {ol.proj.ProjectionLike} source Source projection-like.
|
* @param {ol.proj.ProjectionLike} source Source projection-like.
|
||||||
@@ -716,6 +719,22 @@ ol.proj.transform = function(coordinate, source, destination) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transforms an extent from source projection to destination projection. This
|
||||||
|
* returns a new extent (and does not modify the original).
|
||||||
|
*
|
||||||
|
* @param {ol.Extent} extent The extent to transform.
|
||||||
|
* @param {ol.proj.ProjectionLike} source Source projection-like.
|
||||||
|
* @param {ol.proj.ProjectionLike} destination Destination projection-like.
|
||||||
|
* @return {ol.Extent} The transformed extent.
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
ol.proj.transformExtent = function(extent, source, destination) {
|
||||||
|
var transformFn = ol.proj.getTransform(source, destination);
|
||||||
|
return ol.extent.applyTransform(extent, transformFn);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms the given point to the destination projection.
|
* Transforms the given point to the destination projection.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -101,6 +101,23 @@ describe('ol.proj', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('transformExtent()', function() {
|
||||||
|
|
||||||
|
it('transforms an extent given projection identifiers', function() {
|
||||||
|
var sourceExtent = [-15, -30, 45, 60];
|
||||||
|
var destinationExtent = ol.proj.transformExtent(
|
||||||
|
sourceExtent, 'EPSG:4326', 'EPSG:3857');
|
||||||
|
expect(destinationExtent).not.to.be(undefined);
|
||||||
|
expect(destinationExtent).not.to.be(null);
|
||||||
|
expect(destinationExtent[0])
|
||||||
|
.to.roughlyEqual(-1669792.3618991037, 1e-9);
|
||||||
|
expect(destinationExtent[2]).to.roughlyEqual(5009377.085697311, 1e-9);
|
||||||
|
expect(destinationExtent[1]).to.roughlyEqual(-3503549.843504376, 1e-8);
|
||||||
|
expect(destinationExtent[3]).to.roughlyEqual(8399737.889818361, 1e-8);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
describe('Proj4js integration', function() {
|
describe('Proj4js integration', function() {
|
||||||
|
|
||||||
it('allows Proj4js projections to be used transparently', function() {
|
it('allows Proj4js projections to be used transparently', function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user