# Class: Draw

## ol.interaction.Draw

Interaction that allows drawing geometries.

#### new ol.interaction.Draw(options) experimental

src/ol/interaction/drawinteraction.js, line 79

  Name | Type | Description
  --- | --- | ---
  `options` | Options.
  Name | Type | Description
  --- | --- | ---
  `features` | ol.Collection | undefined | optional Destination collection for the drawn features.
  `source` | ol.source.Vector | undefined | optional Destination source for the drawn features.
  `snapTolerance` | number | undefined | optional Pixel distance for snapping to the drawing finish (default is 12).
  `type` | ol.geom.GeometryType | Drawing type ('Point', 'LineString', 'Polygon', 'MultiPoint', 'MultiLineString', or 'MultiPolygon').
  `minPointsPerRing` | number | undefined | optional The number of points that must be drawn before a polygon ring can be finished (default is 3).
  `style` | ol.style.Style | Array.<ol.style.Style> | ol.feature.StyleFunction | undefined | optional Style for sketch features.
  `geometryName` | string | undefined | optional Geometry name to use for features created by the draw interaction.
  `condition` | ol.events.ConditionType | undefined | optional A conditional modifier (e.g. shift key) that determines if the interaction is active (i.e. a click adds a vertex) or not. By default, a click with no modifier keys adds a vertex.

  ##### Fires:

  - `drawend` (ol.DrawEvent) experimental - Triggered upon feature draw end
  - `drawstart` (ol.DrawEvent) experimental - Triggered upon feature draw start

### Extends

- ol.interaction.Pointer

### Methods

#### dispatchChangeEvent() inherited experimental

src/ol/observable.js, line 41

  Dispatches a `change` event.

  ##### Fires:

  - `change` experimental

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