# Class: Source

This documentation is for OpenLayers v10.9.0. The latest is v.

## ol/source/Source~Source

    import Source from 'ol/source/Source.js';

Abstract base class; normally only used for creating subclasses and not instantiated in apps. Base class for `Layer` sources.

A generic `change` event is triggered when the state of the source changes.

#### new Source(options)

source/Source.js, line 51

  Name | Type | Description
  --- | --- | ---
  `attributions` | AttributionLike | undefined | Attributions.
  `attributionsCollapsible` | boolean (defaults to true) | Attributions are collapsible.
  `projection` | ProjectionLike | undefined | Projection. Default is the view projection.
  `state` | State (defaults to 'ready') | State.
  `wrapX` | boolean (defaults to false) | WrapX.
  `interpolate` | boolean (defaults to false) | Use interpolated values when resampling. By default, the nearest neighbor is used when resampling.

  ##### Fires:

  - `change` (BaseEvent) - Generic change event. Triggered when the revision counter is increased.
  - `error` (BaseEvent) - Generic error event. Triggered when an error occurs.
  - `propertychange` (ObjectEvent) - Triggered when a property is changed.

### Subclasses

- ImageSource
- TileSource
- VectorSource

### Extends

- BaseObject

### Methods

#### changed() inherited

Observable.js, line 68

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

#### dispatchEvent(event){boolean | undefined} inherited

events/Target.js, line 85

  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` | BaseEvent | string | Event object.

  ##### Returns:

  `false` if anyone called preventDefault on the event object or if any of the listeners returned false.

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

Object.js, line 136

  Gets a value.

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

  ##### Returns:

  Value.

#### getAttributions(){Attribution}

source/Source.js, line 129

  Get the attribution function for the source.

  ##### Returns:

  Attribution function.

#### getAttributionsCollapsible(){boolean}

source/Source.js, line 137

  ##### Returns:

  Attributions are collapsible.

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

Object.js, line 149

  Get a list of object property names.

  ##### Returns:

  List of property names.

#### getProjection(){Projection | null}

source/Source.js, line 146

  Get the projection of the source.

  ##### Returns:

  Projection.

#### getProperties(){NoInfer.<Properties>} inherited

Object.js, line 158

  Get an object of all property names and values.

  ##### Returns:

  Object.

#### getRevision(){number} inherited

Observable.js, line 79

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

  ##### Returns:

  Revision.

#### getState(){State}

source/Source.js, line 170

  Get the state of the source, see `State` for possible states.

  ##### Returns:

  State.

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

Observable.js, line 152

  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.

  ##### 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){EventsKey | Array<EventsKey>} inherited

Observable.js, line 164

  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.

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

#### refresh()

source/Source.js, line 192

  Refreshes the source. The source will be cleared, and data from the server will be reloaded.

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

Object.js, line 218

  Sets a value.

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

#### setAttributions(attributions)

source/Source.js, line 203

  Set the attributions of the source.

  Name | Type | Description
  --- | --- | ---
  `attributions` | AttributionLike | undefined | Attributions. Can be passed as `string`, `Array<string>`, `Attribution`, or `undefined`.

#### setProperties(values, silent) inherited

Object.js, line 238

  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` | Partial.<NoInfer.<Properties>> | Values.
  `silent` | boolean | undefined | Update without triggering an event.

#### un(type, listener) inherited

Observable.js, line 173

  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.

#### unset(key, silent) inherited

Object.js, line 262

  Unsets a property.

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