# Class: ImageCanvas

## ol.source.ImageCanvas

Base class for image sources where a canvas element is the image.

#### new ol.source.ImageCanvas(options) experimental

src/ol/source/imagecanvassource.js, line 19

  Name | Type | Description
  --- | --- | ---
  `options` |
  Name | Type | Description
  --- | --- | ---
  `attributions` | Array.<ol.Attribution> | undefined | optional Attributions.
  `canvasFunction` | ol.CanvasFunctionType | Canvas function. The function returning the canvas element used by the source as an image. The arguments passed to the function are: `{ol.Extent}` the image extent, `{number}` the image resolution, `{number}` the device pixel ratio, `{ol.Size}` the image size, and `{ol.proj.Projection}` the image projection. The canvas returned by this function is cached by the source. If the value returned by the function is later changed then `dispatchChangeEvent` should be called on the source for the source to invalidate the current cached image.
  `extent` | ol.Extent | undefined | optional Extent.
  `logo` | string | undefined | optional Logo.
  `projection` | ol.proj.ProjectionLike | Projection.
  `ratio` | number | undefined | optional Ratio. 1 means canvases are the size of the map viewport, 2 means twice the size of the map viewport, and so on. Default is `1.5`.
  `resolutions` | Array.<number> | undefined | optional Resolutions. If specified, new canvases will be created for these resolutions only.
  `state` | ol.source.State | string | undefined | optional Source state.

  ##### Fires:

  - `change` experimental - Triggered when the state of the source changes.

### Subclasses

- ol.source.ImageVector

### Extends

- ol.source.Image

### Methods

#### dispatchChangeEvent() inherited experimental

src/ol/observable.js, line 41

  Dispatches a `change` event.

  ##### Fires:

  - `change` experimental

#### getState(){ol.source.State} inherited experimental

src/ol/source/source.js, line 142

  ##### Returns:

  State.

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

src/ol/observable.js, line 63

  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 | optional The object to use as `this` in `listener`.

  ##### Returns:

  Unique key for the listener.

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

src/ol/observable.js, line 76

  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 | optional The object to use as `this` in `listener`.

  ##### Returns:

  Unique key for the listener.

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

src/ol/observable.js, line 88

  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 | optional The object to use as `this` in `listener`.

#### unByKey(key) inherited experimental

src/ol/observable.js, line 98

  Removes an event listener using the key returned by `on()` or `once()`.

  Name | Type | Description
  --- | --- | ---
  `key` | goog.events.Key | Key.