Allow multi* geometries in Collections/collections.

This commit is contained in:
Marc Jansen
2012-06-25 23:19:25 +02:00
parent 29b684f916
commit f477fd8ced
3 changed files with 39 additions and 1 deletions

View File

@@ -28,7 +28,12 @@ ol.geom.Collection = function(components) {
* @private
* @type {Array.<Function>}
*/
this.typeWhitelist_ = [];
this.typeWhitelist_ = [
ol.geom.MultiPoint,
ol.geom.MultiLineString
// TODO uncomment when implemented
// ,ol.geom.MultiPolygon
];
/**
* @private

View File

@@ -51,6 +51,28 @@ describe("ol.geom.collection", function() {
expect( firstComponent.x() + ',' + firstComponent.y() ).toBe( '24,7' );
});
it("cannot add 'ol.geom.collection'", function(){
expect(function(){
c.add(
ol.geom.collection([
ol.geom.point([5,25]),
ol.geom.point([6,36])
])
);
}).toThrow();
});
it("allows 'ol.geom.multi*' (even though these are technically of ol.geom.collections)", function(){
expect(function(){
c.add(
ol.geom.multipoint([
ol.geom.point([5,25]),
ol.geom.point([6,36])
])
);
}).not.toThrow();
});
it("the index is functional", function(){
var p = ol.geom.point([24,7]);
c.add(p, 1);

View File

@@ -113,6 +113,17 @@ describe("ol.geom.Collection", function() {
}).toThrow();
});
it("allows instances of 'ol.geom.Multi*' (even though these are subclasses of ol.geom.Collection)", function(){
expect(function(){
c.addComponent(
new ol.geom.MultiPoint([
new ol.geom.Point(5,25),
new ol.geom.Point(6,36)
])
);
}).not.toThrow();
});
it("has a method to remove components", function() {
c.setComponents([
new ol.geom.Point(0,10),