goog.provide('ol.layer.Vector'); goog.require('goog.array'); goog.require('goog.object'); goog.require('ol.Feature'); goog.require('ol.FeatureRenderIntent'); goog.require('ol.layer.Layer'); goog.require('ol.source.Vector'); goog.require('ol.source.VectorEventType'); goog.require('ol.style'); goog.require('ol.style.Style'); /** * @constructor * @extends {ol.layer.Layer} * @param {ol.layer.VectorLayerOptions} options Vector layer options. * @todo stability experimental */ ol.layer.Vector = function(options) { var baseOptions = /** @type {ol.layer.VectorLayerOptions} */ (goog.object.clone(options)); /** * @private * @type {ol.style.Style} */ this.style_ = goog.isDef(options.style) ? options.style : null; delete baseOptions.style; /** * @type {function(Array.):string} * @private */ this.transformFeatureInfo_ = goog.isDef(options.transformFeatureInfo) ? options.transformFeatureInfo : ol.layer.Vector.uidTransformFeatureInfo; delete baseOptions.transformFeatureInfo; /** * True if this is a temporary layer. * @type {boolean} * @private */ this.temporary_ = false; goog.base(this, /** @type {ol.layer.LayerOptions} */ (baseOptions)); }; goog.inherits(ol.layer.Vector, ol.layer.Layer); /** * @return {boolean} Whether this layer is temporary. */ ol.layer.Vector.prototype.getTemporary = function() { return this.temporary_; }; /** * @return {ol.source.Vector} Source. */ ol.layer.Vector.prototype.getVectorSource = function() { return /** @type {ol.source.Vector} */ (this.getSource()); }; /** * @return {ol.style.Style} This layer's style. */ ol.layer.Vector.prototype.getStyle = function() { return this.style_; }; /** * Set a style for this layer. * @param {ol.style.Style} style Style. */ ol.layer.Vector.prototype.setStyle = function(style) { this.style_ = style; var source = this.getVectorSource(); if (source) { source.dispatchEvent( new ol.source.VectorEvent(ol.source.VectorEventType.CHANGE, [], [])); } }; /** * @return {function(Array.):string} Feature info function. */ ol.layer.Vector.prototype.getTransformFeatureInfo = function() { return this.transformFeatureInfo_; }; /** * @param {boolean} temporary Whether this layer is temporary. */ ol.layer.Vector.prototype.setTemporary = function(temporary) { this.temporary_ = temporary; }; /** * @param {Array.} features Features. * @return {string} Feature info. */ ol.layer.Vector.uidTransformFeatureInfo = function(features) { var uids = goog.array.map(features, function(feature) { return goog.getUid(feature); }); return uids.join(', '); }; /** * @param {ol.Feature} feature Feature. * @return {boolean} Whether the feature is selected. */ ol.layer.Vector.selectedFeaturesFilter = function(feature) { return feature.getRenderIntent() == ol.FeatureRenderIntent.SELECTED; };