diff --git a/app/lib/pages/marker_handler/get_markers.dart b/app/lib/pages/marker_handler/get_markers.dart index ebc50274eef2ba7278b48028a13a2132150a0b79..cb448d914fd67a9a305e3064384b1b0de0eacd54 100644 --- a/app/lib/pages/marker_handler/get_markers.dart +++ b/app/lib/pages/marker_handler/get_markers.dart @@ -7,12 +7,16 @@ import 'marker_data.dart'; // fetchMarkerTemplate requests all marker data from the server Future<List<Measurement>> fetchMarkerData() async { try { + // Custom HTTP client HttpClient client = HttpClient() - ..badCertificateCallback = (X509Certificate cert, String host, int port) => true; + ..badCertificateCallback = // NB: temporary disable SSL certificate validation + (X509Certificate cert, String host, int port) => true; + // Request makers from API and wait for response var request = await client.getUrl(Uri.parse(serverURI + mapEndpoint)); var response = await request.close(); + // Attempt to parse json if request is ok if (response.statusCode == 200) { var responseBody = await response.transform(utf8.decoder).join(); @@ -22,10 +26,10 @@ Future<List<Measurement>> fetchMarkerData() async { } else { print('Request failed with status: ${response.statusCode}'); - throw Exception('Failed to parse marker data'); + throw Exception('failed to parse marker data'); } } catch (e) { - print('Error: $e'); - throw Exception('failed to connect to the server. Please check your network connection'); + print('Request failed with error ${e}'); + throw Exception('failed to connect to the server. Please check your network connection: ${e}'); } } diff --git a/app/lib/pages/marker_handler/marker_data.dart b/app/lib/pages/marker_handler/marker_data.dart index fe0d4060750cbceda42eac2f964a07d34482cec9..e6a86af121a8ab9291d54cb7ba081c0846ab4f6e 100644 --- a/app/lib/pages/marker_handler/marker_data.dart +++ b/app/lib/pages/marker_handler/marker_data.dart @@ -1,6 +1,8 @@ +import 'dart:core'; + class Measurement { int measurementID; - int timeMeasured; + DateTime timeMeasured; Sensor sensor; List<Data> dataList; List<Corner> cornerList; @@ -18,7 +20,7 @@ class Measurement { factory Measurement.Measurement(Map<String, dynamic> json) { return Measurement( measurementID: json['MeasurementID'], - timeMeasured: json['TimeMeasured'], + timeMeasured: DateTime.parse(json['TimeMeasured']), sensor: Sensor.fromJson(json['Sensor']), dataList: (json['Data'] as List<dynamic>) .map((data) => Data.fromJson(data)) diff --git a/app/lib/pages/widgets/map_widget.dart b/app/lib/pages/widgets/map_widget.dart index dc92f6de4dedc21ec21b654b1a911fab13e9a952..b8708dc6836b53cd02838f4197cb6bce54eef85b 100644 --- a/app/lib/pages/widgets/map_widget.dart +++ b/app/lib/pages/widgets/map_widget.dart @@ -20,6 +20,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { Measurement? selectedMarker; bool isMinimized = true; // Quick view box state tacker + bool satLayer = false; // Satellite layer visibility tracker @override Widget build(BuildContext context) { @@ -55,7 +56,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { polygons: widget.markerList.map((Measurement measurement) { return Polygon( points: measurement.cornerList.map((Corner corner) { - // Map corners to LatLng objects + // Map corner coordinates to LatLng objects return LatLng(corner.latitude, corner.longitude); }).toList(), /*onTap: () { @@ -112,6 +113,25 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { ), ), ), + Positioned( + top: 10, + right: 10, + child: GestureDetector( + onTap: () { + setState(() { + satLayer = !satLayer; // Toggle satellite layer state on press + }); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: satLayer ? const BoxDecoration( // Add decoration only when pressed + shape: BoxShape.circle, + color: Colors.blue, + ) : null, + child: const Icon(Icons.satellite_alt_outlined), + ), + ), + ), ], ), ), diff --git a/server/APIs/__pycache__/get_weather.cpython-311.pyc b/server/APIs/__pycache__/get_weather.cpython-311.pyc index c48ae510b8dcd144dfcf8a877ec949cbd66f1107..ab855e0b7f401aed51ed98d992a3903f0e12b059 100644 Binary files a/server/APIs/__pycache__/get_weather.cpython-311.pyc and b/server/APIs/__pycache__/get_weather.cpython-311.pyc differ diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc index 46facb818c457bb01157ffbd7d0c285473aad2e6..d1b483af8869c5a8987667bd35afdf5e83010ab2 100644 Binary files a/server/map/__pycache__/get_markers.cpython-311.pyc and b/server/map/__pycache__/get_markers.cpython-311.pyc differ