getReportsAlongRoute method
Gets reports along a route (for a specific route corridor)
Implementation
Future<List<Report>> getReportsAlongRoute(List<GeoPoint> routePoints, double bufferDistance) async {
try {
final List<Report> allReports = [];
// Query for each point with deduplication
final Set<String> processedIds = {};
// Convert GeoPoints to RaliPositions first for consistent handling
final raliPositions = PositionConverter.geoPointsToRaliPositions(routePoints);
// Take sampling along the route to avoid too many queries
final sampledPositions = _samplePositions(raliPositions, 300.0); // 300m spacing
// Convert sampled positions back to GeoPoints for queries
final sampledGeoPoints = PositionConverter.raliPositionsToGeoPoints(sampledPositions);
for (final point in sampledGeoPoints) {
final nearbyReports = await getReportsNear(point, bufferDistance);
for (final report in nearbyReports) {
if (!processedIds.contains(report.id)) {
processedIds.add(report.id!);
allReports.add(report);
}
}
}
return allReports;
} catch (e) {
print('Error getting reports along route: $e');
rethrow;
}
}