getHazardsAlongRoute method

Future<List<Report>> getHazardsAlongRoute(
  1. RouteDetails route,
  2. 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 [];
  }
}