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