clusterEach function
void
clusterEach(
- FeatureCollection<
GeometryObject> geojson, - dynamic property,
- ClusterEachCallback callback
clusterEach
Takes a FeatureCollection, a dynamic property
key/value used to create clusters,
and a ClusterEachCallback method that takes (cluster, clusterValue, currentIndex) and
Returns void.
For example:
var geojson = FeatureCollection<Point>(features: [
Feature(
geometry: Point(coordinates: Position.of([10, 10])),
),
Feature(
geometry: Point(coordinates: Position.of([20, 20])),
),
Feature(
geometry: Point(coordinates: Position.of([30, 30])),
),
Feature(
geometry: Point(coordinates: Position.of([40, 40])),
),
]);
// Create a cluster using K-Means (adds `cluster` to [GeoJSONObject]'s properties)
var clustered = clustersKmeans(geojson);
// Iterates over each cluster
clusterEach(clustered, 'cluster', (cluster, clusterValue, currentIndex) {
//= cluster
//= clusterValue
//= currentIndex
})
// Calculates the total number of clusters
var total = 0
clusterEach(clustered, 'cluster', function () {
total++;
});
// Creates [List] of all the values retrieved from the 'cluster' property
var values = []
clusterEach(clustered, 'cluster', (cluster, clusterValue) {
values.add(clusterValue);
});
Implementation
void clusterEach(
FeatureCollection geojson, dynamic property, ClusterEachCallback callback) {
if (property == null) {
throw Exception("property is required");
}
// Creates clusters based on property values
var bins = createBins(geojson, property);
var values = bins.keys.toList();
for (var index = 0; index < values.length; index++) {
var value = values[index];
List<int> bin = bins[value]!;
List<Feature> features = [];
for (var i = 0; i < bin.length; i++) {
features.add(geojson.features[bin[i]]);
}
callback(FeatureCollection(features: features), value, index);
}
}