coordReduce<T> function
T?
coordReduce<T>(
- GeoJSONObject geojson,
- CoordReduceCallback<
T> callback, - T? initialValue, [
- bool excludeWrapCoord = false,
Reduces coordinates in any GeoJSONObject, similar to Iterable.reduce
Takes FeatureCollection, GeometryObject, or a Feature,
a CoordReduceCallback method that takes (previousValue, currentCoord, coordIndex), an
initialValue
Value to use as the first argument to the first call of the callback,
and a boolean excludeWrapCoord=false
for whether or not to include the final coordinate
of LinearRings that wraps the ring in its iteration.
Returns the value that results from the reduction.
For example:
var features = FeatureCollection(features: [
Feature(geometry: Point(coordinates: Position.of([26, 37])), properties: {'foo': 'bar'}),
Feature(geometry: Point(coordinates: Position.of([36, 53])), properties: {'foo': 'bar'})
]);
coordReduce(features, (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
//=previousValue
//=currentCoord
//=coordIndex
//=featureIndex
//=multiFeatureIndex
//=geometryIndex
return currentCoord;
});
Implementation
T? coordReduce<T>(
GeoJSONObject geojson,
CoordReduceCallback<T> callback,
T? initialValue, [
bool excludeWrapCoord = false,
]) {
var previousValue = initialValue;
coordEach(geojson, (Position? currentCoord, coordIndex, featureIndex,
multiFeatureIndex, geometryIndex) {
if (coordIndex == 0 && initialValue == null && currentCoord is T) {
previousValue = currentCoord?.clone() as T;
} else {
previousValue = callback(previousValue, currentCoord, coordIndex,
featureIndex, multiFeatureIndex, geometryIndex);
}
}, excludeWrapCoord);
return previousValue;
}