From b0240876bc8094a59ba9fcde3fca233bcf7bfa2b Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Tue, 20 Feb 2024 13:23:54 +0100
Subject: [PATCH] add: recenter map

---
 app/lib/pages/widgets/map_widget.dart | 41 ++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/app/lib/pages/widgets/map_widget.dart b/app/lib/pages/widgets/map_widget.dart
index cc83e425..4e9688a7 100644
--- a/app/lib/pages/widgets/map_widget.dart
+++ b/app/lib/pages/widgets/map_widget.dart
@@ -24,6 +24,14 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
   Measurement? selectedMarker;  // Containing data for selected marker
   bool isMinimized = true;      // Quick view box state tacker
   bool satLayer = false;        // Satellite layer visibility tracker
+  bool isTapped = false;        // Button tap state tracker
+  final MapController _mapController = MapController(); // Map controller to re-center map view
+
+
+  // recenterMap moves the map back to its initial view
+  void recenterMap() {
+    _mapController.move(mapCenter, 9.0);
+  }
 
   @override
   Widget build(BuildContext context) {
@@ -55,6 +63,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                         center: mapCenter,
                         zoom: 9.0,
                       ),
+                      mapController: _mapController,
                       children: [
                         TileLayer(
                           urlTemplate: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
@@ -164,7 +173,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                               child: GestureDetector(
                                 onTap: () {
                                   setState(() {
-                                    isMinimized = !isMinimized; // Toggle minimized state
+                                    //isMinimized = !isMinimized; // Toggle minimized state
                                   });
                                 },
                                 child: Icon(isMinimized ? Icons.arrow_drop_up : Icons.arrow_drop_down),
@@ -194,6 +203,36 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                       ),
                     ),
                   ),
+                  Positioned( // Back to center button
+                    top: 45,
+                    right: 10,
+                    child: GestureDetector(
+                      onTapDown: (_) {
+                        setState(() {
+                          recenterMap(); // Reset map view
+                          isTapped = true;
+                        });
+                      },
+                      onTapUp: (_) {
+                        setState(() {
+                          isTapped = false;
+                        });
+                      },
+                      onTapCancel: () {
+                        setState(() {
+                          isTapped = false;
+                        });
+                      },
+                      child: Container(
+                        padding: const EdgeInsets.all(8),
+                        decoration: isTapped ? const BoxDecoration( // Add decoration only when pressed
+                          shape: BoxShape.circle,
+                          color: Colors.blue,
+                        ) : null,
+                        child: const Icon(Icons.settings_backup_restore),
+                      ),
+                    ),
+                  ),
                 ],
               ),
             ),
-- 
GitLab