Skip to content
Snippets Groups Projects
Commit 8e8b08aa authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

add: map re-renctering button, not tested

parent dfa69ddb
No related branches found
No related tags found
1 merge request!19Clhp map, license agreement
......@@ -28,6 +28,8 @@ class ChoroplethMap extends StatefulWidget {
}
class ChoroplethMapState extends State<ChoroplethMap> {
late final GlobalKey<ChoroplethMapState> _choroplethMapKey = GlobalKey();
int selectedIndex = -1; // Subdivision/map tile index
late MapShapeSource dataSource;
late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior();
......@@ -36,6 +38,12 @@ class ChoroplethMapState extends State<ChoroplethMap> {
_initDataSource();
}
void resetZoom() {
setState(() {
_choroplethMapKey.currentState?.resetZoom();
});
}
@override
void initState() {
super.initState();
......
......@@ -32,19 +32,20 @@ class MapContainerWidget extends StatefulWidget {
}
class _MapContainerWidgetState extends State<MapContainerWidget> {
// Button state trackers
bool isMinimized = true; // Quick view box state tacker
bool satLayer = false; // Satellite layer visibility state
bool osmLayer = false; // OSM layer visibility state
bool isSatTapped = false; // Satellite button tap state tracker
bool isMapTapped = false; // OSM button tap state tracker
bool infoLayer = false; // Additional color information visibility
bool centerMap = false; // Map centering button state tracker
bool infoLayer = false; // Additional color legend visibility
// Initialise selected measurement to arbitrary value
Measurement? selectedMeasurement = selectedMeasurements[0];
final GlobalKey<ChoroplethMapState> _choroplethMapKey = GlobalKey();
// Initialise lastUpdate variable from persistent storage if server fetch fails
/// Initialise lastUpdate variable from persistent storage if server fetch fails
Future<void> checkAndSetLastUpdate() async {
if (lastUpdate == null) {
final prefs = await SharedPreferences.getInstance();
......@@ -76,6 +77,13 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
});
}
/// Reset the map zoom and centering
void resetZoom() {
setState(() {
_choroplethMapKey.currentState?.resetZoom();
});
}
@override
Widget build(BuildContext context) {
// Initialise selectedMarker to first element in markerList
......@@ -109,6 +117,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
child: Padding(
padding: const EdgeInsets.all(15.0), // Padding around map
child: ChoroplethMap(
key: _choroplethMapKey,
relation: widget.relation,
measurements: widget.measurements,
subdivisions: widget.subdivisions,
......@@ -227,9 +236,42 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
),
),
),
Positioned( // Color info button
Positioned( // Recenter map button
top: 130,
right: 10,
child: GestureDetector(
onTapDown: (_) {
setState(() {
centerMap = true;
});
},
onTapUp: (_) {
setState(() {
centerMap = false;
});
resetZoom(); // Reset the map zoom
},
onTapCancel: () {
setState(() {
centerMap = false;
});
},
child: Container(
padding: const EdgeInsets.all(8),
decoration: centerMap ? const BoxDecoration( // Add decoration only while pressed
shape: BoxShape.circle,
color: Colors.grey,
) : null,
child: const Icon(
Icons.center_focus_strong,
color: Colors.white54,
),
),
),
),
Positioned( // Color info button
top: 170,
right: 10,
child: GestureDetector(
onTap: () {
setState(() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment