Add a getGeometry method

This commit is contained in:
Andreas Hocevar
2014-12-18 10:28:21 +01:00
parent 2bf191b5e3
commit 784701641d
2 changed files with 43 additions and 7 deletions

View File

@@ -26,6 +26,12 @@ ol.style.Style = function(opt_options) {
var options = goog.isDef(opt_options) ? opt_options : {};
/**
* @private
* @type {string|ol.geom.Geometry|ol.style.GeometryFunction}
*/
this.geometry_ = null;
/**
* @private
* @type {!ol.style.GeometryFunction}
@@ -70,9 +76,20 @@ ol.style.Style = function(opt_options) {
/**
* @return {!ol.style.GeometryFunction} Function that
* is called with a feature and returns the geometry to render instead of the
* feature's geometry.
* @return {string|ol.geom.Geometry|ol.style.GeometryFunction}
* Feature property or geometry or function that returns the geometry that will
* be rendered with this style.
* @api
*/
ol.style.Style.prototype.getGeometry = function() {
return this.geometry_;
};
/**
* @return {!ol.style.GeometryFunction} Function that is called with a feature
* and returns the geometry to render instead of the feature's geometry.
* @api
*/
ol.style.Style.prototype.getGeometryFunction = function() {
return this.geometryFunction_;
@@ -143,14 +160,15 @@ ol.style.Style.prototype.setGeometry = function(geometry) {
}
return result;
};
} else if (goog.isNull(geometry)) {
this.geometryFunction_ = ol.style.defaultGeometryFunction;
} else if (goog.isDef(geometry)) {
goog.asserts.assertInstanceof(geometry, ol.geom.Geometry);
this.geometryFunction_ = function() {
return geometry;
};
} else {
this.geometryFunction_ = ol.style.defaultGeometryFunction;
}
this.geometry_ = geometry;
};
@@ -319,8 +337,8 @@ ol.style.createDefaultEditingStyles = function() {
/**
* A function that takes an `{ol.Feature}` as argument and returns a geometry
* that will be rendered and styled for the feature.
* A function that takes an {@link ol.Feature} as argument and returns an
* {@link ol.geom.Geometry} that will be rendered and styled for the feature.
*
* @typedef {function(ol.Feature): (ol.geom.Geometry|undefined)}
* @api

View File

@@ -40,6 +40,24 @@ describe('ol.style.Style', function() {
});
});
describe('#getGeometry', function() {
it('returns whatever was passed to setGeometry', function() {
var style = new ol.style.Style();
style.setGeometry('foo');
expect(style.getGeometry()).to.eql('foo');
var geom = new ol.geom.Point([1, 2]);
style.setGeometry(geom);
expect(style.getGeometry()).to.eql(geom);
var fn = function() { return geom; };
style.setGeometry(fn);
expect(style.getGeometry()).to.eql(fn);
style.setGeometry(null);
expect(style.getGeometry()).to.eql(null);
});
});
});
describe('ol.style.createStyleFunction()', function() {