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.

If the instance is disposed without also disposing the underlying source setSource(null) has to be called to remove the listener reference from the wrapped source.

new Cluster(options)

Name Type Description
attributions AttributionLike | undefined

Attributions.

distance number (defaults to 20)

Distance in pixels within which features will be clustered together.

minDistance number (defaults to 0)

Minimum distance in pixels between clusters. Will be capped at the configured distance. By default no minimum distance is guaranteed. This config can be used to avoid overlapping icons. As a tradoff, the cluster feature's position will no longer be the center of all its features.

geometryFunction function | undefined

Function that takes an Feature as argument and returns an 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 underlying source contains point features only, is

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

See getInteriorPoint for a way to get a cluster calculation point for polygons.

createCluster function | undefined

Function that takes the cluster's center Point and an array of Feature included in this cluster. Must return a Feature that will be used to render. Default implementation is:

function(point, features) {
  return new Feature({
    geometry: point,
    features: features
  });
}
source VectorSource (defaults to null)

Source.

wrapX boolean (defaults to true)

Whether to wrap the world horizontally.

Fires:

Extends

Methods

addFeature(feature) inherited

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. Note: this also applies if an Collection is used for features, meaning that if a feature with a duplicate id is added in the collection, it will be removed from it right away.

Name Type Description
feature Feature

Feature to add.

addFeatures(features) inherited

Add a batch of features to the source.

Name Type Description
features Array<Feature>

Features to add.

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

Remove all features from the source.

Name Type Description
fast boolean | undefined

Skip dispatching of removefeature events.

dispatchEvent(event){boolean | undefined} inherited

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.

forEachFeature(callback){T | undefined} inherited

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

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

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

Gets a value.

Name Type Description
key string

Key name.

Returns:
Value.

Get the attribution function for the source.

Returns:
Attribution function.

getAttributionsCollapsible(){boolean} inherited

Returns:
Attributions are collapsible.

getClosestFeatureToCoordinate(coordinate, filter){Feature} inherited

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 Coordinate

Coordinate.

filter function | undefined

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}

Get the distance in pixels between clusters.

Returns:
Distance.

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 Extent | undefined

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

Returns:
Extent.

getFeatureById(id){Feature | null} inherited

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<Feature>} inherited

Get a snapshot of the features currently on the source in random order. The returned array is a copy, the features are references to the features in the source.

Returns:
Features.

getFeaturesAtCoordinate(coordinate){Array<Feature>} inherited

Get all features whose geometry intersects the provided coordinate.

Name Type Description
coordinate Coordinate

Coordinate.

Returns:
Features.

getFeaturesCollection(){Collection<Feature> | null} inherited

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

Returns:
The collection of features.

getFeaturesInExtent(extent, projection){Array<Feature>} inherited

Get all features whose bounding box intersects 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).

When useSpatialIndex is set to false, this method will return all features.

Name Type Description
extent Extent

Extent.

projection Projection | undefined

Include features where extent exceeds the x-axis bounds of projection and wraps around the world.

Returns:
Features.

getFormat(){FeatureFormat | undefined} inherited

Get the format associated with this source.

Returns:
The feature format.

getKeys(){Array.<string>} inherited

Get a list of object property names.

Returns:
List of property names.

getMinDistance(){number}

The configured minimum distance between clusters.

Returns:
The minimum distance in pixels.

getProjection(){Projection | null} inherited

Get the projection of the source.

Returns:
Projection.

getProperties(){Object.<string, *>} inherited

Get an object of all property names and values.

Returns:
Object.

getRevision(){number} inherited

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

Returns:
Revision.

getSource(){VectorSource | null}

Get a reference to the wrapped source.

Returns:
Source.

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

Returns:
State.

getUrl(){string | FeatureUrlFunction | undefined} inherited

Get the url associated with this source.

Returns:
The url.

hasFeature(feature){boolean} inherited

Returns true if the feature is contained within the source.

Name Type Description
feature Feature

Feature.

Returns:
Has feature.

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

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

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.

removeFeature(feature) inherited

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 Feature

Feature to remove.

removeLoadedExtent(extent) inherited

Remove an extent from the list of loaded extents.

Name Type Description
extent Extent

Extent.

set(key, value, silent) inherited

Sets a value.

Name Type Description
key string

Key name.

value *

Value.

silent boolean | undefined

Update without triggering an event.

setAttributions(attributions) inherited

Set the attributions of the source.

Name Type Description
attributions AttributionLike | undefined

Attributions. Can be passed as string, Array<string>, Attribution, or undefined.

setDistance(distance)

Set the distance within which features will be clusterd together.

Name Type Description
distance number

The distance in pixels.

setLoader(loader) inherited

Set the new loader of the source. The next render cycle will use the new loader.

Name Type Description
loader FeatureLoader

The loader to set.

setMinDistance(minDistance)

Set the minimum distance between clusters. Will be capped at the configured distance.

Name Type Description
minDistance number

The minimum distance in pixels.

setProperties(values, silent) inherited

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 | undefined

Update without triggering an event.

setSource(source)

Replace the wrapped source.

Name Type Description
source VectorSource | null

The new source for this instance.

Points the source to a new url. The next render cycle will use the new url.

Name Type Description
url string | FeatureUrlFunction

Url.

un(type, listener) inherited

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

Unsets a property.

Name Type Description
key string

Key name.

silent boolean | undefined

Unset without triggering an event.