Class: Feature

ol.Feature

A vector object for geographic features with a geometry and other attribute properties, similar to the features in vector file formats like GeoJSON.

Features can be styled individually with setStyle; otherwise they use the style of their vector layer or feature overlay.

Note that attribute properties are set as ol.Object properties on the feature object, so they are observable, and have get/set accessors.

Typically, a feature has a single geometry property. You can set the geometry using the setGeometry method and get it with getGeometry. It is possible to store more than one geometry on a feature using attribute properties. By default, the geometry used for rendering is identified by the property name geometry. If you want to use another geometry property for rendering, use the setGeometryName method to change the attribute property associated with the geometry for the feature. For example:

var feature = new ol.Feature({
  geometry: new ol.geom.Polygon(polyCoords),
  labelPoint: new ol.geom.Point(labelCoords),
  name: 'My Polygon'
});

// get the polygon geometry
var poly = feature.getGeometry();

// Render the feature as a point using the coordinates from labelPoint
feature.setGeometryName('labelPoint');

// get the point geometry
var point = feature.getGeometry();

new ol.Feature(opt_geometryOrProperties)

Name Type Description
geometryOrProperties ol.geom.Geometry | Object.<string, *>=

You may pass a Geometry object directly, or an object literal containing properties. If you pass an object literal, you may include a Geometry associated with a geometry key.

Fires:

Extends

Observable Properties

Name Type Settable ol.ObjectEvent type Description
geometry ol.geom.Geometry | undefined yes change:geometry

Returns the Geometry associated with this feature using the current geometry name property. By default, this is geometry but it may be changed by calling setGeometryName.

Methods

bindTo(key, target, opt_targetKey){ol.ObjectAccessor} inherited experimental

The bindTo method allows you to set up a two-way binding between a source and target object. The method returns an object with a transform method that you can use to provide from and to functions to transform values on the way from the source to the target and on the way back.

For example, if you had two map views (sourceView and targetView) and you wanted the target view to have double the resolution of the source view, you could transform the resolution on the way to and from the target with the following:

sourceView.bindTo('resolution', targetView)
  .transform(
    function(sourceResolution) {
      // from sourceView.resolution to targetView.resolution
      return 2 * sourceResolution;
    },
    function(targetResolution) {
      // from targetView.resolution to sourceView.resolution
      return targetResolution / 2;
    }
  );
Name Type Description
key string

Key name.

target ol.Object

Target.

targetKey string

Target key.

changed() inherited experimental

Increases the revision counter and disptches a 'change' event.

Fires:
  • change experimental

Clone this feature. If the original feature has a geometry it is also cloned. The feature id is not set in the clone.

Returns:
The clone.

get(key){*} inherited experimental

Gets a value.

Name Type Description
key string

Key name.

Returns:
Value.

getGeometry(){ol.geom.Geometry|undefined}

Returns:
Returns the Geometry associated with this feature using the current geometry name property. By default, this is geometry but it may be changed by calling setGeometryName.

getGeometryName(){string}

Returns:
Get the property name associated with the geometry for this feature. By default, this is geometry but it may be changed by calling setGeometryName.

getId(){number|string|undefined}

Returns:
Id.

getKeys(){Array.<string>} inherited experimental

Get a list of object property names.

Returns:
List of property names.

getProperties(){Object.<string, *>} inherited experimental

Get an object of all property names and values.

Returns:
Object.

getRevision(){number} inherited experimental

Returns:
Revision.
Returns:
Return the style as set by setStyle in the same format that it was provided in. If setStyle has not been called, or if it was called with null, then getStyle() will return null.
Returns:
Return a function representing the current style of this feature.

on(type, listener, opt_this){goog.events.Key} inherited

Listen for a certain type of event.

Name Type Description
type string | Array.<string>

The event type or array of event types.

listener function

The listener function.

this Object

The object to use as this in listener.

Returns:
Unique key for the listener.

once(type, listener, opt_this){goog.events.Key} inherited

Listen once for a certain type of event.

Name Type Description
type string | Array.<string>

The event type or array of event types.

listener function

The listener function.

this Object

The object to use as this in listener.

Returns:
Unique key for the listener.

set(key, value) inherited experimental

Sets a value.

Name Type Description
key string

Key name.

value *

Value.

setGeometry(geometry)

Name Type Description
geometry ol.geom.Geometry | undefined

Set the geometry for this feature. This will update the property associated with the current geometry property name. By default, this is geometry but it can be changed by calling setGeometryName.

setGeometryName(name)

Name Type Description
name string

Set the property name from which this feature's geometry will be fetched when calling getGeometry.

Name Type Description
id number | string | undefined

Set a unique id for this feature. The id may be used to retrieve a feature from a vector source with the ol.source.Vector#getFeatureById method.

setProperties(values) inherited experimental

Sets a collection of key-value pairs.

Name Type Description
values Object.<string, *>

Values.

setStyle(style)

Set the style for the feature. This can be a single style object, an array of styles, or a function that takes a resolution and returns an array of styles. If it is null the feature has no style (a null style).

Name Type Description
style ol.style.Style | Array.<ol.style.Style> | ol.feature.FeatureStyleFunction

Style for this feature.

un(type, listener, opt_this) inherited

Unlisten for a certain type of event.

Name Type Description
type string | Array.<string>

The event type or array of event types.

listener function

The listener function.

this Object

The object which was used as this by the listener.

unbind(key) inherited experimental

Removes a binding. Unbinding will set the unbound property to the current value. The object will not be notified, as the value has not changed.

Name Type Description
key string

Key name.

unbindAll() inherited experimental

Removes all bindings.

Removes an event listener using the key returned by on() or once(). Note that using the ol.Observable.unByKey static function is to be preferred.

Name Type Description
key goog.events.Key

The key returned by on() or once().