From 7f5d59857cdbcc28f9de296ad2363a8d738e5b6c Mon Sep 17 00:00:00 2001 From: Valentin CZERYBA Date: Sun, 17 Nov 2024 11:10:43 +0100 Subject: [PATCH] re-zoom ok --- covas_mobile/lib/pages/MapboxPages.dart | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/covas_mobile/lib/pages/MapboxPages.dart b/covas_mobile/lib/pages/MapboxPages.dart index 701cda6..1c5e2bc 100644 --- a/covas_mobile/lib/pages/MapboxPages.dart +++ b/covas_mobile/lib/pages/MapboxPages.dart @@ -260,12 +260,42 @@ class _MapboxPagesState extends State with ShowErrorDialog { lineOpacity: 0.8, ), ); + _zoomToFitRoute(routeCoordinates); } } else { showErrorDialog(context, "Invalid coordinates or user position."); } } + void _zoomToFitRoute(List coordinates) { + // Calculate the bounding box + double minLat = coordinates.first.latitude; + double maxLat = coordinates.first.latitude; + double minLng = coordinates.first.longitude; + double maxLng = coordinates.first.longitude; + + for (LatLng coord in coordinates) { + if (coord.latitude < minLat) minLat = coord.latitude; + if (coord.latitude > maxLat) maxLat = coord.latitude; + if (coord.longitude < minLng) minLng = coord.longitude; + if (coord.longitude > maxLng) maxLng = coord.longitude; + } + + // Define the bounds + LatLng southwest = LatLng(minLat, minLng); + LatLng northeast = LatLng(maxLat, maxLng); + + mapController.moveCamera( + CameraUpdate.newLatLngBounds( + LatLngBounds(southwest: southwest, northeast: northeast), + left: 50, // Padding on the left + top: 50, // Padding on the top + right: 50, // Padding on the right + bottom: 50, // Padding on the bottom + ), + ); + } + // Load image from assets Future _loadMarkerImage(String assetPath) async { final ByteData data = await rootBundle.load(assetPath);