diff --git a/covas_mobile_new/lib/pages/MapboxPages.dart b/covas_mobile_new/lib/pages/MapboxPages.dart index 241a423..3f117bc 100644 --- a/covas_mobile_new/lib/pages/MapboxPages.dart +++ b/covas_mobile_new/lib/pages/MapboxPages.dart @@ -126,7 +126,7 @@ class _MapboxPagesState extends State with ShowAlertDialog { setState(() { userPosition = mapbox.Point( coordinates: - mapbox.Position(position.latitude, position.longitude)); + mapbox.Position(position.longitude, position.latitude)); isUserPositionInitialized = true; }); @@ -139,18 +139,32 @@ class _MapboxPagesState extends State with ShowAlertDialog { Future _fetchRoute( mapbox.Point origin, mapbox.Point destination, String mode) async { final url = Uri.parse( - 'https://api.mapbox.com/directions/v5/mapbox/$mode/${origin.coordinates.lng},${origin.coordinates.lat};${destination.coordinates.lng},${destination.coordinates.lat}?geometries=geojson&access_token=${dotenv.env['MAPBOX_ACCESS_TOKEN']}', + 'https://api.mapbox.com/directions/v5/mapbox/$mode/' + '${origin.coordinates.lng},${origin.coordinates.lat};' + '${destination.coordinates.lng},${destination.coordinates.lat}' + '?geometries=geojson&access_token=${dotenv.env['MAPBOX_ACCESS_TOKEN']}', ); final response = await http.get(url); + if (response.statusCode == 200) { final data = jsonDecode(response.body); - final geometry = data['routes'][0]['geometry']['coordinates']; - setState(() { - routeCoordinates = (geometry as List) - .map>((coord) => [coord[0], coord[1]]) - .toList(); - }); + + // Vérifie si 'routes' existe et contient au moins 1 élément + if (data['routes'] != null && (data['routes'] as List).isNotEmpty) { + final geometry = data['routes'][0]['geometry']['coordinates']; + + setState(() { + routeCoordinates = (geometry as List) + .map>((coord) => [coord[0], coord[1]]) + .toList(); + }); + } else { + debugPrint("⚠️ Aucune route trouvée entre ${origin} et $destination."); + // Optionnel : afficher un snackbar/toast à l’utilisateur + } + } else { + debugPrint("❌ Erreur API Mapbox: ${response.statusCode}"); } }