diff --git a/src/ol/geom/Geometry.js b/src/ol/geom/Geometry.js index 9378df6ebc..c8ef578e90 100644 --- a/src/ol/geom/Geometry.js +++ b/src/ol/geom/Geometry.js @@ -1,11 +1,13 @@ goog.provide('ol.geom.Geometry'); +goog.require('ol.geom.IGeometry'); goog.require('ol.Bounds'); /** * Creates ol.Geometry objects. * * @export + * @implements {ol.geom.IGeometry} * @constructor */ ol.geom.Geometry = function() { @@ -34,10 +36,23 @@ ol.geom.Geometry.prototype.setBounds = function(bounds) { }; /** - * @returns ol.Loc + * Returns the centroid of the geometry. + * + * @returns {ol.geom.Point} The centroid of the geometry. */ ol.geom.Geometry.prototype.getCentroid = function() { - //FIXME: stub only to get popups working - return new ol.Loc(-76,45); + // throw an error to enforce subclasses to implement it properly + ol.error('ol.geom.Geometry: getCentroid must be implemented by subclasses'); + return null; }; +/** + * Returns the area of the geometry. + * + * @returns {number} The area of the geometry. + */ +ol.geom.Geometry.prototype.getArea = function() { + // throw an error to enforce subclasses to implement it properly + ol.error('ol.geom.Geometry: getArea must be implemented by subclasses'); + return 0; +}; diff --git a/src/ol/geom/IGeometry.js b/src/ol/geom/IGeometry.js new file mode 100644 index 0000000000..c950be388a --- /dev/null +++ b/src/ol/geom/IGeometry.js @@ -0,0 +1,27 @@ +goog.provide('ol.geom.IGeometry'); + +//goog.require('ol.geom.Point'); +//goog.require('ol.Bounds'); + +/** + * Interface for geometry classes forcing ol.geom.* classes to implement + * expected functionality. + * + * @interface + */ +ol.geom.IGeometry = function(){}; + +/** + * @return {ol.geom.Point} The centroid of the geometry. + */ +ol.geom.IGeometry.prototype.getCentroid = function(){}; + +/** + * @return {ol.Bounds|undefined} The centroid of the geometry. + */ +ol.geom.IGeometry.prototype.getBounds = function(){}; + +/** + * @return {number} The area of the geometry. + */ +ol.geom.IGeometry.prototype.getArea = function(){}; \ No newline at end of file