simplify function

Feature<LineString> simplify(
  1. Feature<LineString> points, {
  2. double tolerance = 1,
  3. bool highestQuality = false,
})

Simplify a LineString feature using dart port of simplify.js high-performance JS polyline simplification library.

both algorithms combined for awesome performance

Implementation

Feature<LineString> simplify(
  Feature<LineString> points, {
  double tolerance = 1,
  bool highestQuality = false,
}) {
  var coords = getCoords(points);
  if (coords.length <= 2) return points;
  if (coords is! List<Position>) return points;

  final sqTolerance = tolerance * tolerance;

  coords = highestQuality ? coords : _simplifyRadialDist(coords, sqTolerance);
  coords = _simplifyDouglasPeucker(coords, sqTolerance);

  return Feature<LineString>(
    id: points.id,
    geometry: LineString(coordinates: coords),
    properties: points.properties,
    bbox: points.bbox,
  );
}