92 lines
2.2 KiB
JavaScript
92 lines
2.2 KiB
JavaScript
goog.provide('ol.feature');
|
|
|
|
goog.require('ol.base');
|
|
goog.require('ol.Feature');
|
|
goog.require('ol.geom.Geometry');
|
|
|
|
|
|
/**
|
|
* @typedef {ol.Feature|Object|string}
|
|
*/
|
|
ol.FeatureLike;
|
|
|
|
|
|
/**
|
|
* @export
|
|
* @param {ol.FeatureLike=} opt_arg Argument.
|
|
* @return {ol.Feature} Feature.
|
|
*/
|
|
ol.feature = function(opt_arg){
|
|
|
|
/** @type {Object|undefined} */
|
|
var properties;
|
|
/** @type {ol.geom.Geometry|undefined} */
|
|
var geometry;
|
|
/** @type {string|undefined} */
|
|
var type;
|
|
|
|
if (arguments.length == 1) {
|
|
if (opt_arg instanceof ol.Feature) {
|
|
return opt_arg;
|
|
}
|
|
else if (goog.isObject(opt_arg)) {
|
|
ol.base.checkKeys(opt_arg, ['geometry', 'properties', 'type']);
|
|
properties = opt_arg['properties'];
|
|
geometry = opt_arg['geometry'];
|
|
type = opt_arg['type'];
|
|
}
|
|
else {
|
|
throw new Error('ol.feature');
|
|
}
|
|
}
|
|
|
|
var feature = new ol.Feature();
|
|
if (goog.isDef(type) && type == 'Feature') {
|
|
//this means it is a GeoJSON object
|
|
//format.read(opt_arg);
|
|
|
|
} else {
|
|
if (goog.isDef(properties)) {
|
|
feature.setAttributes(properties);
|
|
}
|
|
if (goog.isDef(geometry)) {
|
|
feature.setGeometry(geometry);
|
|
}
|
|
}
|
|
return feature;
|
|
|
|
};
|
|
|
|
/**
|
|
* @param {!string} attr The name of the attribute to be set.
|
|
* @param {string|number|boolean} value The value of the attribute to be set.
|
|
* @returns {ol.Feature} The feature so calls can be chained
|
|
*/
|
|
ol.Feature.prototype.set = function(attr, value) {
|
|
this.setAttribute(attr, value);
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* @param {!string} attr The name of the attribute to be set.
|
|
* @returns {string|number|boolean|undefined} The attribute value requested.
|
|
*/
|
|
ol.Feature.prototype.get = function(attr) {
|
|
return this.getAttribute(attr);
|
|
};
|
|
|
|
/**
|
|
* @param {ol.geom.Geometry=} opt_arg
|
|
* @returns {ol.Feature|ol.geom.Geometry|undefined} get or set the geometry on a feature
|
|
*/
|
|
ol.Feature.prototype.geometry = function(opt_arg) {
|
|
if (arguments.length == 1 && goog.isDef(opt_arg)) {
|
|
this.setGeometry(opt_arg);
|
|
return this;
|
|
} else {
|
|
return this.getGeometry();
|
|
}
|
|
};
|
|
|
|
|