Skip to content

Commit

Permalink
Merge pull request openlayers#2207 from probins/projdocs
Browse files Browse the repository at this point in the history
Improve docs for projection/transform functions
  • Loading branch information
pagameba committed Jun 23, 2014
2 parents d7a046a + ff3e66d commit e5b9098
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 16 deletions.
2 changes: 1 addition & 1 deletion apidoc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Interactions for [vector features](ol.Feature.html)
<br>[Formats](ol.format.Feature.html) for reading/writing vector data
<br>[ol.format.WMSCapabilities](ol.format.WMSCapabilities.html)</td></tr>
<tr><th>Projections</th><th>2-way bindings</th><th>Other components</th></tr>
<tr><td><p>All coordinates and extents need to be provided in map projection (default: [EPSG:3857](ol.proj.EPSG3857.html)). To transform, use [ol.proj.transform()](ol.proj.html#transform).</p>
<tr><td><p>All coordinates and extents need to be provided in view projection (default: [EPSG:3857](ol.proj.EPSG3857.html)). To transform, use [ol.proj.transform()](ol.proj.html#transform) and [ol.extent.applyTransform()](ol.extent.html#applyTransform).</p>
[ol.proj](ol.proj.html)</td>
<td><p>[Objects](ol.Object.html) can be kept in sync using the [bindTo()](ol.Object.html#bindTo) method.</p>
<p>A [DOM Input](ol.dom.Input.html) class is available to bind Object properties to HTML Input elements.</p></td>
Expand Down
4 changes: 4 additions & 0 deletions src/ol/geom/geometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ ol.geom.Geometry.prototype.getType = goog.abstractMethod;

/**
* Apply a transform function to the geometry. Modifies the geometry in place.
* If you do not want the geometry modified in place, first clone() it and
* then use this function on the clone.
* @function
* @param {ol.TransformFunction} transformFn Transform.
* @todo api
Expand All @@ -177,6 +179,8 @@ ol.geom.Geometry.prototype.applyTransform = goog.abstractMethod;
/**
* Transform a geometry from one coordinate reference system to another.
* Modifies the geometry in place.
* If you do not want the geometry modified in place, first clone() it and
* then use this function on the clone.
*
* @param {ol.proj.ProjectionLike} source The current projection. Can be a
* string identifier or a {@link ol.proj.Projection} object.
Expand Down
4 changes: 4 additions & 0 deletions src/ol/proj/epsg4326projection.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ goog.require('ol.proj.Units');
* @classdesc
* Projection object for WGS84 geographic coordinates (EPSG:4326).
*
* Note that OpenLayers does not strictly comply with the EPSG definition.
* The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).
* OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.
*
* @constructor
* @extends {ol.proj.Projection}
* @param {string} code Code.
Expand Down
40 changes: 25 additions & 15 deletions src/ol/proj/proj.js
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,9 @@ ol.proj.addProj4jsProjection_ = function(proj4jsProjection) {


/**
* @param {ol.proj.Projection} projection Projection.
* Add a Projection object to the list of supported projections.
*
* @param {ol.proj.Projection} projection Projection object.
* @todo api
*/
ol.proj.addProjection = function(projection) {
Expand Down Expand Up @@ -476,10 +478,12 @@ ol.proj.removeTransform = function(source, destination) {


/**
* Fetches a Projection object for the code specified.
*
* @param {ol.proj.ProjectionLike} projectionLike Either a code string which is
* a combination of authority and identifier such as "EPSG:4326", or an
* existing projection object, or undefined.
* @return {ol.proj.Projection} Projection.
* @return {ol.proj.Projection} Projection object, or null if not in list.
* @todo api
*/
ol.proj.get = function(projectionLike) {
Expand Down Expand Up @@ -555,13 +559,13 @@ ol.proj.equivalent = function(projection1, projection2) {


/**
* Given the projection-like objects this method searches for a transformation
* Given the projection-like objects, searches for a transformation
* function to convert a coordinates array from the source projection to the
* destination projection.
*
* @param {ol.proj.ProjectionLike} source Source.
* @param {ol.proj.ProjectionLike} destination Destination.
* @return {ol.TransformFunction} Transform.
* @return {ol.TransformFunction} Transform function.
* @todo api
*/
ol.proj.getTransform = function(source, destination) {
Expand All @@ -573,12 +577,13 @@ ol.proj.getTransform = function(source, destination) {


/**
* Searches a function that can be used to convert coordinates from the source
* projection to the destination projection.
* Searches in the list of transform functions for the function for converting
* coordinates from the source projection to the destination projection.
*
* @param {ol.proj.Projection} sourceProjection Source projection.
* @param {ol.proj.Projection} destinationProjection Destination projection.
* @return {ol.TransformFunction} Transform.
* @param {ol.proj.Projection} sourceProjection Source Projection object.
* @param {ol.proj.Projection} destinationProjection Destination Projection
* object.
* @return {ol.TransformFunction} Transform function.
*/
ol.proj.getTransformFromProjections =
function(sourceProjection, destinationProjection) {
Expand Down Expand Up @@ -694,15 +699,20 @@ ol.proj.cloneTransform = function(input, opt_output, opt_dimension) {


/**
* @param {ol.Coordinate} point Point.
* @param {ol.proj.ProjectionLike} source Source.
* @param {ol.proj.ProjectionLike} destination Destination.
* @return {ol.Coordinate} Point.
* Transforms a coordinate from source projection to destination projection.
* See {@link ol.extent.applyTransform} for extent transformation.
* See the applyTransform method of {@link ol.geom.SimpleGeometry} and its
* subclasses for geometry transforms.
*
* @param {ol.Coordinate} coordinate Coordinate.
* @param {ol.proj.ProjectionLike} source Source projection-like.
* @param {ol.proj.ProjectionLike} destination Destination projection-like.
* @return {ol.Coordinate} Coordinate.
* @todo api
*/
ol.proj.transform = function(point, source, destination) {
ol.proj.transform = function(coordinate, source, destination) {
var transformFn = ol.proj.getTransform(source, destination);
return transformFn(point);
return transformFn(coordinate);
};


Expand Down
15 changes: 15 additions & 0 deletions src/ol/proj/proj.jsdoc
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
/**
* The ol.proj namespace stores:
* * a list of {@link ol.proj.Projection}
* objects, one for each projection supported by the application
* * a list of transform functions needed to convert coordinates in one projection
* into another.
*
* The static functions are the methods used to maintain these.
* Each transform function can handle not only simple coordinate pairs, but also
* large arrays of coordinates such as vector geometries.
*
* When loaded, the library adds projection objects for EPSG:4326 (WGS84
* geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used
* for example by Bing Maps or OpenStreetMap), together with the relevant
* transform functions.
*
* @namespace ol.proj
*/

0 comments on commit e5b9098

Please sign in to comment.