Allow ol.Feature to be constructed with no argument

This commit is contained in:
Frederic Junod
2013-12-05 15:36:11 +01:00
parent 057cda42be
commit 3d4199193f
+14 -10
View File
@@ -1,5 +1,6 @@
goog.provide('ol.Feature'); goog.provide('ol.Feature');
goog.require('goog.asserts');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('ol.Object'); goog.require('ol.Object');
@@ -18,9 +19,10 @@ ol.FeatureProperty = {
/** /**
* @constructor * @constructor
* @extends {ol.Object} * @extends {ol.Object}
* @param {ol.geom.Geometry|Object.<string, *>} geometryOrValues Values. * @param {ol.geom.Geometry|Object.<string, *>=} opt_geometryOrValues
* Values or geometry.
*/ */
ol.Feature = function(geometryOrValues) { ol.Feature = function(opt_geometryOrValues) {
goog.base(this); goog.base(this);
@@ -46,14 +48,16 @@ ol.Feature = function(geometryOrValues) {
this, ol.Object.getChangeEventType(ol.FeatureProperty.GEOMETRY), this, ol.Object.getChangeEventType(ol.FeatureProperty.GEOMETRY),
this.handleGeometryChanged_, false, this); this.handleGeometryChanged_, false, this);
if (geometryOrValues instanceof ol.geom.Geometry) { if (goog.isDef(opt_geometryOrValues)) {
var geometry = /** @type {ol.geom.Geometry} */ (geometryOrValues); if (opt_geometryOrValues instanceof ol.geom.Geometry) {
this.setGeometry(geometry); var geometry = /** @type {ol.geom.Geometry} */ (opt_geometryOrValues);
} else { this.setGeometry(geometry);
var values = /** @type {Object.<string, *>} */ (geometryOrValues); } else {
this.setValues(values); goog.asserts.assert(goog.isObject(opt_geometryOrValues));
var values = /** @type {Object.<string, *>} */ (opt_geometryOrValues);
this.setValues(values);
}
} }
}; };
goog.inherits(ol.Feature, ol.Object); goog.inherits(ol.Feature, ol.Object);
@@ -113,7 +117,7 @@ ol.Feature.prototype.handleGeometryChanged_ = function() {
this.geometryChangeKey_ = null; this.geometryChangeKey_ = null;
} }
var geometry = this.getGeometry(); var geometry = this.getGeometry();
if (goog.isDef(geometry)) { if (goog.isDefAndNotNull(geometry)) {
this.geometryChangeKey_ = goog.events.listen(geometry, this.geometryChangeKey_ = goog.events.listen(geometry,
goog.events.EventType.CHANGE, this.handleGeometryChange_, false, this); goog.events.EventType.CHANGE, this.handleGeometryChange_, false, this);
} }