compressPath static method

PathCompressionResult compressPath(
  1. List<LatLng> path, {
  2. required double minimumDistanceMeters,
  3. required double simplificationToleranceMeters,
  4. required int precision,
  5. List<LatLng> preservePoints = const [],
})

Filters, simplifies, rounds, and encodes a raw list of path coordinates.

Implementation

static PathCompressionResult compressPath(
  List<LatLng> path, {
  required double minimumDistanceMeters,
  required double simplificationToleranceMeters,
  required int precision,
  List<LatLng> preservePoints = const [],
}) {
  _validateCompressionSettings(
    minimumDistanceMeters: minimumDistanceMeters,
    simplificationToleranceMeters: simplificationToleranceMeters,
    precision: precision,
  );

  if (path.isEmpty) {
    return const PathCompressionResult(
      filteredPath: [],
      simplifiedPath: [],
      compressedPath: [],
      encodedPath: '',
    );
  }

  final filteredPath = _filterByDistance(
    path,
    minimumDistanceMeters: minimumDistanceMeters,
    preservePoints: preservePoints,
  );
  final simplifiedPath = _simplifyWithDouglasPeucker(
    filteredPath,
    toleranceMeters: simplificationToleranceMeters,
    preservePoints: preservePoints,
  );
  final compressedPath = _reducePrecision(
    simplifiedPath,
    precision: precision,
  );

  return PathCompressionResult(
    filteredPath: filteredPath,
    simplifiedPath: simplifiedPath,
    compressedPath: compressedPath,
    encodedPath: encodePolyline(compressedPath, precision: precision),
  );
}