diff --git a/lib/OpenLayers/Feature/Vector.js b/lib/OpenLayers/Feature/Vector.js index 998d312e0e..e969f82123 100644 --- a/lib/OpenLayers/Feature/Vector.js +++ b/lib/OpenLayers/Feature/Vector.js @@ -80,7 +80,7 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, { OpenLayers.Feature.prototype.initialize.apply(this, [null, null, attributes]); this.lonlat = null; - this.geometry = geometry; + this.geometry = geometry ? geometry : null; this.state = null; this.attributes = {}; if (attributes) { @@ -113,9 +113,10 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, { * {} An exact clone of this vector feature. */ clone: function () { - return new OpenLayers.Feature.Vector(this.geometry.clone(), - this.attributes, - this.style); + return new OpenLayers.Feature.Vector( + this.geometry ? this.geometry.clone() : null, + this.attributes, + this.style); }, /** diff --git a/tests/Feature/Vector.html b/tests/Feature/Vector.html index 1e7aadb9c1..8cdb92e6ee 100644 --- a/tests/Feature/Vector.html +++ b/tests/Feature/Vector.html @@ -59,7 +59,7 @@ } function test_Feature_Vector_clone(t) { - t.plan(5); + t.plan(6); var geometry = new OpenLayers.Geometry.Point(Math.random(), Math.random()); @@ -79,6 +79,11 @@ "geometry.x property set properly"); t.eq(clone.geometry.y, geometry.y, "geometry.y property set properly"); + + feature = new OpenLayers.Feature.Vector(); + clone = feature.clone(); + t.ok(clone instanceof OpenLayers.Feature.Vector, + "clone can clone geometry-less features"); }