OpenLayers v4.0.1 API - Class: Feature

# Class: Feature

This documentation is for OpenLayers v4.0.1. The latest is v.

## 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.

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)

src/ol/feature.js, line 57

  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:

  - `change` (ol.events.Event) - Generic change event. Triggered when the revision counter is increased.
  - `change:geometry` (ol.Object.Event)
  - `propertychange` (ol.Object.Event) - Triggered when a property is changed.

### Extends

- ol.Object

### Observable Properties

Name | Type | Settable | ol.Object.Event type | Description
--- | --- | --- | --- | ---
`geometry` | ol.geom.Geometry | undefined | yes | `change:geometry` | The default geometry for the feature.

### Methods

#### changed() inherited

src/ol/observable.js, line 58

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

#### clone(){ol.Feature}

src/ol/feature.js, line 118

  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.

#### dispatchEvent(event) inherited

src/ol/observable.js, line 75

  Dispatches an event and calls all listeners listening for events of this type. The event parameter can either be a string or an Object with a `type` property.

  Name | Type | Description
  --- | --- | ---
  `event` | Object | ol.events.Event | string | Event object.

#### get(key){*} inherited

src/ol/object.js, line 101

  Gets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.

  ##### Returns:

  Value.

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

src/ol/feature.js, line 141

  Get the feature's default geometry. A feature may have any number of named geometries. The "default" geometry (the one that is rendered by default) is set when calling `ol.Feature#setGeometry`.

  ##### Returns:

  The default geometry for the feature.

#### getGeometryName(){string}

src/ol/feature.js, line 166

  Get the name of the feature's default geometry. By default, the default geometry is named `geometry`.

  ##### Returns:

  Get the property name associated with the default geometry for this feature.

#### getId(){number|string|undefined}

src/ol/feature.js, line 154

  Get the feature identifier. This is a stable identifier for the feature and is either set when reading data from a remote source or set explicitly by calling `ol.Feature#setId`.

  ##### Returns:

  Id.

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

src/ol/object.js, line 115

  Get a list of object property names.

  ##### Returns:

  List of property names.

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

src/ol/object.js, line 125

  Get an object of all property names and values.

  ##### Returns:

  Object.

#### getRevision(){number} inherited

src/ol/observable.js, line 84

  Get the version number for this object. Each time the object is modified, its version number will be incremented.

  ##### Returns:

  Revision.

#### getStyle(){ol.style.Style|Array.<ol.style.Style>|ol.FeatureStyleFunction|ol.StyleFunction}

src/ol/feature.js, line 178

  Get the feature's style. Will return what was provided to the `ol.Feature#setStyle` method.

  ##### Returns:

  The feature style.

#### getStyleFunction(){ol.FeatureStyleFunction|undefined}

src/ol/feature.js, line 189

  Get the feature's style function.

  ##### Returns:

  Return a function representing the current style of this feature.

#### on(type, listener, opt_this){ol.EventsKey|Array.<ol.EventsKey>} inherited

src/ol/observable.js, line 99

  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. If called with an array of event types as the first argument, the return will be an array of keys.

#### once(type, listener, opt_this){ol.EventsKey|Array.<ol.EventsKey>} inherited

src/ol/observable.js, line 124

  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. If called with an array of event types as the first argument, the return will be an array of keys.

#### set(key, value, opt_silent) inherited

src/ol/object.js, line 150

  Sets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `value` | * | Value.
  `silent` | boolean | Update without triggering an event.

#### setGeometry(geometry)

src/ol/feature.js, line 226

  Set the default geometry for the feature. This will update the property with the name returned by `ol.Feature#getGeometryName`.

  Name | Type | Description
  --- | --- | ---
  `geometry` | ol.geom.Geometry | undefined | The new geometry.

#### setGeometryName(name)

src/ol/feature.js, line 270

  Set the property name to be used when getting the feature's default geometry. When calling `ol.Feature#getGeometry`, the value of the property with this name will be returned.

  Name | Type | Description
  --- | --- | ---
  `name` | string | The property name of the default geometry.

#### setId(id)

src/ol/feature.js, line 257

  Set the feature id. The feature id is considered stable and may be used when requesting features or comparing identifiers returned from a remote source. The feature id can be used with the `ol.source.Vector#getFeatureById` method.

  Name | Type | Description
  --- | --- | ---
  `id` | number | string | undefined | The feature id.

  ##### Fires:

  - `change` (ol.events.Event) - Generic change event. Triggered when the revision counter is increased.

#### setProperties(values, opt_silent) inherited

src/ol/object.js, line 170

  Sets a collection of key-value pairs. Note that this changes any existing properties and adds new ones (it does not remove any existing properties).

  Name | Type | Description
  --- | --- | ---
  `values` | Object.<string, *> | Values.
  `silent` | boolean | Update without triggering an event.

#### setStyle(style)

src/ol/feature.js, line 240

  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.FeatureStyleFunction | ol.StyleFunction | Style for this feature.

  ##### Fires:

  - `change` (ol.events.Event) - Generic change event. Triggered when the revision counter is increased.

#### un(type, listener, opt_this) inherited

src/ol/observable.js, line 147

  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`.

#### unset(key, opt_silent) inherited

src/ol/object.js, line 184

  Unsets a property.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `silent` | boolean | Unset without triggering an event.