getHazardsAlongRoute method
- RouteDetails route,
- double bufferDistance
Gets all hazards along a specified route (user reports + Mapbox data)
Implementation
Future<List<Report>> getHazardsAlongRoute(RouteDetails route, double bufferDistance) async {
try {
final List<Report> combinedResults = [];
// Convert route points (RaliPosition) to GeoPoint list for user reports
final List<GeoPoint> routeGeoPoints = route.points
.map((p) => GeoPoint(p.lat, p.lng))
.toList();
// Get user reports from Firebase
final userReports = await _reportService.getReportsAlongRoute(
routeGeoPoints, bufferDistance);
combinedResults.addAll(userReports);
// If combining results is enabled, get Mapbox hazards
if (_combineResults) {
final mapboxHazards = await _mapboxService.getRoadIncidents(route);
// Convert Mapbox incidents to Report format
for (final hazard in mapboxHazards) {
final report = _mapboxService.convertIncidentToReport(hazard);
combinedResults.add(report);
}
}
return combinedResults;
} catch (e) {
print('Error getting hazards along route: $e');
return [];
}
}