diff --git a/src/ol/geom/geometry.js b/src/ol/geom/geometry.js index 90d04778d2..f2c9ebd167 100644 --- a/src/ol/geom/geometry.js +++ b/src/ol/geom/geometry.js @@ -194,6 +194,16 @@ ol.geom.Geometry.prototype.applyTransform = goog.abstractMethod; ol.geom.Geometry.prototype.intersectsExtent = goog.abstractMethod; +/** + * Translate the geometry. + * @param {number} deltaX Delta X. + * @param {number} deltaY Delta Y. + * @function + * @api + */ +ol.geom.Geometry.prototype.translate = goog.abstractMethod; + + /** * Transform each coordinate of the geometry from one coordinate reference * system to another. The geometry is modified in place. diff --git a/src/ol/geom/geometrycollection.js b/src/ol/geom/geometrycollection.js index 0ccdd1887a..ca5cb08483 100644 --- a/src/ol/geom/geometrycollection.js +++ b/src/ol/geom/geometrycollection.js @@ -277,6 +277,22 @@ ol.geom.GeometryCollection.prototype.applyTransform = function(transformFn) { }; +/** + * Translate the geometry. + * @param {number} deltaX Delta X. + * @param {number} deltaY Delta Y. + * @api + */ +ol.geom.GeometryCollection.prototype.translate = function(deltaX, deltaY) { + var geometries = this.geometries_; + var i, ii; + for (i = 0, ii = geometries.length; i < ii; ++i) { + geometries[i].translate(deltaX, deltaY); + } + this.changed(); +}; + + /** * @inheritDoc */ diff --git a/src/ol/geom/simplegeometry.js b/src/ol/geom/simplegeometry.js index 89449a1527..7ead9c8269 100644 --- a/src/ol/geom/simplegeometry.js +++ b/src/ol/geom/simplegeometry.js @@ -255,6 +255,24 @@ ol.geom.SimpleGeometry.prototype.applyTransform = function(transformFn) { }; +/** + * Translate the geometry. + * @param {number} deltaX Delta X. + * @param {number} deltaY Delta Y. + * @api + */ +ol.geom.SimpleGeometry.prototype.translate = function(deltaX, deltaY) { + var flatCoordinates = this.getFlatCoordinates(); + if (!goog.isNull(flatCoordinates)) { + var stride = this.getStride(); + ol.geom.flat.transform.translate( + flatCoordinates, 0, flatCoordinates.length, stride, + deltaX, deltaY, flatCoordinates); + this.changed(); + } +}; + + /** * @param {ol.geom.SimpleGeometry} simpleGeometry Simple geometry. * @param {goog.vec.Mat4.Number} transform Transform.