Location transform in api.

This commit is contained in:
Tim Schaub
2012-06-21 19:02:26 +02:00
parent ba7b54949c
commit 6198df9381
3 changed files with 27 additions and 24 deletions

View File

@@ -65,6 +65,23 @@ ol.loc = function(opt_arg){
};
/**
* Transform this location to another coordinate reference system. This
* requires that this location has a projection set already (if not, an error
* will be thrown). Returns a new location object and does not modify this
* location.
*
* @export
* @param {string|ol.Projection} proj The destination projection. Can be
* supplied as a projection instance of a string identifier.
* @returns {ol.Loc} A new location.
*/
ol.Loc.prototype.transform = function(proj) {
if (goog.isString(proj)) {
proj = new ol.Projection(proj);
}
return this.doTransform(proj);
};
/**
* @export

View File

@@ -104,31 +104,13 @@ ol.Loc.prototype.setZ = function(z) {
this.z_ = z;
};
/**
* Transform this location to another coordinate reference system. This
* requires that this location has a projection set already (if not, an error
* will be thrown). Returns a new location object and does not modify this
* location.
*
* @export
* @param {string|!ol.Projection} proj The destination projection. Can be
* supplied as a projection instance of a string identifier.
* @returns {!ol.Loc} A new location.
*/
ol.Loc.prototype.transform = function(proj) {
if (goog.isString(proj)) {
proj = new ol.Projection(proj);
}
return this._transform(proj);
};
/**
* Transform this location to a new location given a projection object.
*
* @param {!ol.Projection} proj The destination projection.
* @returns {!ol.Loc}
* @param {ol.Projection} proj The destination projection.
* @returns {ol.Loc}
*/
ol.Loc.prototype._transform = function(proj) {
ol.Loc.prototype.doTransform = function(proj) {
var point = {'x': this.x_, 'y': this.y_};
var sourceProj = this.projection_;
if (!goog.isDefAndNotNull(sourceProj)) {

View File

@@ -164,12 +164,16 @@ ol.Projection.addTransform = function(from, to, method) {
/**
* Transform a point coordinate from one projection to another.
*
* @param {!Object} point Object with x and y properties.
* @param {!ol.Projection} source Source projection.
* @param {!ol.Projection} dest Destination projection.
* @param {Object} point Object with x and y properties.
* @param {ol.Projection} source Source projection.
* @param {ol.Projection} dest Destination projection.
*/
ol.Projection.transform = function(point, source, dest) {
goog.asserts.assertObject(point);
goog.asserts.assertObject(source);
goog.asserts.assertObject(dest);
if (source.proj_ && dest.proj_) {
// TODO: implement Proj4js handling
// point = Proj4js.transform(source.proj_, dest.proj_, point);
} else {
var sourceCode = source.getCode();