OpenLayers v4.0.1 API - Class: Cluster

# Class: Cluster

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

## ol.source.Cluster

Layer source to cluster vector data. Works out of the box with point geometries. For other geometry types, or if not all geometries should be considered for clustering, a custom `geometryFunction` can be defined.

#### new ol.source.Cluster(options)

src/ol/source/cluster.js, line 27

  Name | Type | Description
  --- | --- | ---

  `options`

  Constructor options.

  Name | Type | Description
  --- | --- | ---
  `attributions` | ol.AttributionLike | undefined | Attributions.
  `distance` | number | undefined | Minimum distance in pixels between clusters. Default is `20`.
  `extent` | ol.Extent | undefined | Extent.

  `geometryFunction`

  undefined | function

  Function that takes an `ol.Feature` as argument and returns an `ol.geom.Point` as cluster calculation point for the feature. When a feature should not be considered for clustering, the function should return `null`. The default, which works when the underyling source contains point features only, is

      function(feature) {
        return feature.getGeometry();
      }

  See `ol.geom.Polygon#getInteriorPoint` for a way to get a cluster calculation point for polygons.

  `format` | ol.format.Feature | undefined | Format.
  `logo` | string | undefined | Logo.
  `projection` | ol.ProjectionLike | Projection.
  `source` | ol.source.Vector | Source. Required.
  `wrapX` | boolean | undefined | WrapX. Default is true

  ##### Fires:

  - `addfeature` (ol.source.Vector.Event) - Triggered when a feature is added to the source.
  - `change` (ol.events.Event) - Generic change event. Triggered when the revision counter is increased.
  - `changefeature` (ol.source.Vector.Event) - Triggered when a feature is updated.
  - `clear` (ol.source.Vector.Event) - Triggered when the clear method is called on the source.
  - `propertychange` (ol.Object.Event) - Triggered when a property is changed.
  - `removefeature` (ol.source.Vector.Event) - Triggered when a feature is removed from the source. See `source.clear()` for exceptions.

### Extends

- ol.source.Vector

### Methods

#### addFeature(feature) inherited

src/ol/source/vector.js, line 164

  Add a single feature to the source. If you want to add a batch of features at once, call `source.addFeatures()` instead.

  Name | Type | Description
  --- | --- | ---
  `feature` | ol.Feature | Feature to add.

#### addFeatures(features) inherited

src/ol/source/vector.js, line 244

  Add a batch of features to the source.

  Name | Type | Description
  --- | --- | ---
  `features` | Array.<ol.Feature> | Features to add.

#### changed() inherited

src/ol/observable.js, line 58

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

#### clear(opt_fast) inherited

src/ol/source/vector.js, line 342

  Remove all features from the source.

  Name | Type | Description
  --- | --- | ---
  `fast` | boolean | Skip dispatching of `removefeature` events.

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

#### forEachFeature(callback, opt_this){S|undefined} inherited

src/ol/source/vector.js, line 389

  Iterate through all features on the source, calling the provided callback with each one. If the callback returns any "truthy" value, iteration will stop and the function will return the same value.

  Name | Type | Description
  --- | --- | ---
  `callback` | function | Called with each feature on the source. Return a truthy value to stop iteration.
  `this` | T | The object to use as `this` in the callback.

  ##### Returns:

  The return value from the last call to the callback.

#### forEachFeatureInExtent(extent, callback, opt_this){S|undefined} inherited

src/ol/source/vector.js, line 445

  Iterate through all features whose bounding box intersects the provided extent (note that the feature's geometry may not intersect the extent), calling the callback with each feature. If the callback returns a "truthy" value, iteration will stop and the function will return the same value.

  If you are interested in features whose geometry intersects an extent, call the `source.forEachFeatureIntersectingExtent()` method instead.

  When `useSpatialIndex` is set to false, this method will loop through all features, equivalent to `ol.source.Vector#forEachFeature`.

  Name | Type | Description
  --- | --- | ---
  `extent` | ol.Extent | Extent.
  `callback` | function | Called with each feature whose bounding box intersects the provided extent.
  `this` | T | The object to use as `this` in the callback.

  ##### Returns:

  The return value from the last call to the callback.

#### forEachFeatureIntersectingExtent(extent, callback, opt_this){S|undefined} inherited

src/ol/source/vector.js, line 471

  Iterate through all features whose geometry intersects the provided extent, calling the callback with each feature. If the callback returns a "truthy" value, iteration will stop and the function will return the same value.

  If you only want to test for bounding box intersection, call the `source.forEachFeatureInExtent()` method instead.

  Name | Type | Description
  --- | --- | ---
  `extent` | ol.Extent | Extent.
  `callback` | function | Called with each feature whose geometry intersects the provided extent.
  `this` | T | The object to use as `this` in the callback.

  ##### Returns:

  The return value from the last call to the callback.

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

src/ol/object.js, line 101

  Gets a value.

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

  ##### Returns:

  Value.

#### getAttributions(){Array.<ol.Attribution>} inherited

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

  Get the attributions of the source.

  ##### Returns:

  Attributions.

#### getClosestFeatureToCoordinate(coordinate, opt_filter){ol.Feature} inherited

src/ol/source/vector.js, line 565

  Get the closest feature to the provided coordinate.

  This method is not available when the source is configured with `useSpatialIndex` set to `false`.

  Name | Type | Description
  --- | --- | ---
  `coordinate` | ol.Coordinate | Coordinate.
  `filter` | function | Feature filter function. The filter function will receive one argument, the `feature` and it should return a boolean value. By default, no filtering is made.

  ##### Returns:

  Closest feature.

#### getExtent(){ol.Extent} inherited

src/ol/source/vector.js, line 616

  Get the extent of the features currently in the source.

  This method is not available when the source is configured with `useSpatialIndex` set to `false`.

  ##### Returns:

  Extent.

#### getFeatureById(id){ol.Feature} inherited

src/ol/source/vector.js, line 630

  Get a feature by its identifier (the value returned by feature.getId()). Note that the index treats string and numeric identifiers as the same. So `source.getFeatureById(2)` will return a feature with id `'2'` or `2`.

  Name | Type | Description
  --- | --- | ---
  `id` | string | number | Feature identifier.

  ##### Returns:

  The feature (or `null` if not found).

#### getFeatures(){Array.<ol.Feature>} inherited

src/ol/source/vector.js, line 507

  Get all features on the source in random order.

  ##### Returns:

  Features.

#### getFeaturesAtCoordinate(coordinate){Array.<ol.Feature>} inherited

src/ol/source/vector.js, line 528

  Get all features whose geometry intersects the provided coordinate.

  Name | Type | Description
  --- | --- | ---
  `coordinate` | ol.Coordinate | Coordinate.

  ##### Returns:

  Features.

#### getFeaturesCollection(){ol.Collection.<ol.Feature>} inherited

src/ol/source/vector.js, line 497

  Get the features collection associated with this source. Will be `null` unless the source was configured with `useSpatialIndex` set to `false`, or with an `ol.Collection` as `features`.

  ##### Returns:

  The collection of features.

#### getFeaturesInExtent(extent){Array.<ol.Feature>} inherited

src/ol/source/vector.js, line 548

  Get all features in the provided extent. Note that this returns an array of all features intersecting the given extent in random order (so it may include features whose geometries do not intersect the extent).

  This method is not available when the source is configured with `useSpatialIndex` set to `false`.

  Name | Type | Description
  --- | --- | ---
  `extent` | ol.Extent | Extent.

  ##### Returns:

  Features.

#### getFormat(){ol.format.Feature|undefined} inherited

src/ol/source/vector.js, line 642

  Get the format associated with this source.

  ##### Returns:

  The feature format.

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

src/ol/object.js, line 115

  Get a list of object property names.

  ##### Returns:

  List of property names.

#### getLogo(){string|olx.LogoOptions|undefined} inherited

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

  Get the logo of the source.

  ##### Returns:

  Logo.

#### getProjection(){ol.proj.Projection} inherited

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

  Get the projection of the source.

  ##### Returns:

  Projection.

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

#### getSource(){ol.source.Vector}

src/ol/source/cluster.js, line 82

  Get a reference to the wrapped source.

  ##### Returns:

  Source.

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

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

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

  ##### Returns:

  State.

#### getUrl(){string|ol.FeatureUrlFunction|undefined} inherited

src/ol/source/vector.js, line 667

  Get the url associated with this source.

  ##### Returns:

  The url.

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

#### refresh() inherited

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

  Refreshes the source and finally dispatches a 'change' event.

#### removeFeature(feature) inherited

src/ol/source/vector.js, line 768

  Remove a single feature from the source. If you want to remove all features at once, use the `source.clear()` method instead.

  Name | Type | Description
  --- | --- | ---
  `feature` | ol.Feature | Feature to remove.

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

#### setAttributions(attributions) inherited

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

  Set the attributions of the source.

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

#### setDistance(distance)

src/ol/source/cluster.js, line 107

  Set the distance in pixels between clusters.

  Name | Type | Description
  --- | --- | ---
  `distance` | number | The distance in pixels.

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

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