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

add: sattelite layer button

parent bb14fd70
No related branches found
No related tags found
1 merge request!2App2
......@@ -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}');
}
}
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))
......
......@@ -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),
),
),
),
],
),
),
......
No preview for this file type
No preview for this file type
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