simplifyPath static method
Implementation
static List<LatLng> simplifyPath(List<LatLng> points, double tolerance) {
if (points.length < 3) return points;
int index = -1;
double maxDistance = 0.0;
for (int i = 1; i < points.length - 1; i++) {
double distance = perpendicularDistance(points[i], points.first, points.last);
if (distance > maxDistance) {
maxDistance = distance;
index = i;
}
}
if (maxDistance > tolerance) {
List<LatLng> leftPath = simplifyPath(points.sublist(0, index + 1), tolerance);
List<LatLng> rightPath = simplifyPath(points.sublist(index), tolerance);
List<LatLng> finalPath = leftPath.sublist(0, leftPath.length - 1);
finalPath.addAll(rightPath);
return finalPath;
} else {
return [points.first, points.last];
}
}