Class: Cluster

ol/source/Cluster~Cluster


import Cluster from '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 Cluster(options)

source/Cluster.js, line 45
Name Type Description
options

Cluster options.

Name Type Default Description
attributions module:ol/source/Source~AttributionLike

Attributions.

distance number 20

Minimum distance in pixels between clusters.

geometryFunction function

Function that takes an module:ol/Feature as argument and returns an module: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 module:ol/geom/Polygon~Polygon#getInteriorPoint for a way to get a cluster calculation point for polygons.

source module:ol/source/Vector~VectorSource

Source.

wrapX boolean true

Whether to wrap the world horizontally.

Fires:

Extends

Methods

addFeature(feature) inherited

source/Vector.js, line 288

Add a single feature to the source. If you want to add a batch of features at once, call #addFeatures() instead. A feature will not be added to the source if feature with the same id is already there. The reason for this behavior is to avoid feature duplication when using bbox or tile loading strategies.

Name Type Description
feature module:ol/Feature~Feature

Feature to add.

addFeatures(features) inherited

source/Vector.js, line 368

Add a batch of features to the source.

Name Type Description
features Array.<module:ol/Feature~Feature>

Features to add.

clear(opt_fast) inherited

source/Vector.js, line 475

Remove all features from the source.

Name Type Description
fast boolean

Skip dispatching of module:ol/source/Vector.VectorSourceEvent#removefeature events.

forEachFeature(callback){T|undefined} inherited

source/Vector.js, line 522

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. Note: this function only iterate through the feature that have a defined geometry.

Name Type Description
callback function

Called with each feature on the source. Return a truthy value to stop iteration.

Returns:
The return value from the last call to the callback.

forEachFeatureInExtent(extent, callback){T|undefined} inherited

source/Vector.js, line 575

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 #forEachFeatureIntersectingExtent() method instead.

When useSpatialIndex is set to false, this method will loop through all features, equivalent to #forEachFeature().

Name Type Description
extent module:ol/extent~Extent

Extent.

callback function

Called with each feature whose bounding box intersects the provided extent.

Returns:
The return value from the last call to the callback.

forEachFeatureIntersectingExtent(extent, callback){T|undefined} inherited

source/Vector.js, line 599

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 #forEachFeatureInExtent() method instead.

Name Type Description
extent module:ol/extent~Extent

Extent.

callback function

Called with each feature whose geometry intersects the provided extent.

Returns:
The return value from the last call to the callback.

getClosestFeatureToCoordinate(coordinate, opt_filter){module:ol/Feature~Feature} inherited

source/Vector.js, line 693

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 module:ol/coordinate~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.

getDistance(){number}

source/Cluster.js, line 99

Get the distance in pixels between clusters.

Returns:
Distance.

getExtent(opt_extent){module:ol/extent~Extent} inherited

source/Vector.js, line 746

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.

Name Type Description
extent module:ol/extent~Extent

Destination extent. If provided, no new extent will be created. Instead, that extent's coordinates will be overwritten.

Returns:
Extent.

getFeatureById(id){module:ol/Feature~Feature} inherited

source/Vector.js, line 760

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.<module:ol/Feature~Feature>} inherited

source/Vector.js, line 634

Get all features on the source in random order.

Returns:
Features.

getFeaturesAtCoordinate(coordinate){Array.<module:ol/Feature~Feature>} inherited

source/Vector.js, line 656

Get all features whose geometry intersects the provided coordinate.

Name Type Description
coordinate module:ol/coordinate~Coordinate

Coordinate.

Returns:
Features.

getFeaturesCollection(){module:ol/Collection~Collection.<module:ol/Feature~Feature>} inherited

source/Vector.js, line 624

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

Returns:
The collection of features.

getFeaturesInExtent(extent){Array.<module:ol/Feature~Feature>} inherited

source/Vector.js, line 676

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 module:ol/extent~Extent

Extent.

Returns:
Features.

getFormat(){module:ol/format/Feature~FeatureFormat|undefined} inherited

source/Vector.js, line 772

Get the format associated with this source.

Returns:
The feature format.

getSource(){module:ol/source/Vector~VectorSource}

source/Cluster.js, line 108

Get a reference to the wrapped source.

Returns:
Source.

getUrl(){string|module:ol/featureloader~FeatureUrlFunction|undefined} inherited

source/Vector.js, line 791

Get the url associated with this source.

Returns:
The url.

hasFeature(feature){boolean} inherited

source/Vector.js, line 853

Returns true if the feature is contained within the source.

Name Type Description
feature module:ol/Feature~Feature

Feature.

Returns:
Has feature.

removeFeature(feature) inherited

source/Vector.js, line 925

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

Name Type Description
feature module:ol/Feature~Feature

Feature to remove.

removeLoadedExtent(extent) inherited

source/Vector.js, line 903

Remove an extent from the list of loaded extents.

Name Type Description
extent module:ol/extent~Extent

Extent.

setDistance(distance)

source/Cluster.js, line 130

Set the distance in pixels between clusters.

Name Type Description
distance number

The distance in pixels.

setLoader(loader) inherited

source/Vector.js, line 985

Set the new loader of the source. The next loadFeatures call will use the new loader.

Name Type Description
loader module:ol/featureloader~FeatureLoader

The loader to set.