diff --git a/app/lib/pages/marker_handler/marker_data.dart b/app/lib/pages/marker_handler/marker_data.dart
index e84c14160deffc06dfd71ac1d3521d53b635c3e2..6bb3d5387e44da7be9d40ee832b92103093ef578 100644
--- a/app/lib/pages/marker_handler/marker_data.dart
+++ b/app/lib/pages/marker_handler/marker_data.dart
@@ -8,6 +8,7 @@ class Measurement {
   String bodyOfWater;
   LatLng center;
   List <SubDiv> subDiv;
+  List <LatLng> corners;
 
   Measurement({
     required this.measurementID,
@@ -16,6 +17,7 @@ class Measurement {
     required this.bodyOfWater,
     required this.center,
     required this.subDiv,
+    required this.corners
   });
 
   factory Measurement.fromJson(Map<String, dynamic> json) {
@@ -26,6 +28,7 @@ class Measurement {
       bodyOfWater: json['BodyOfWater'] ?? 'nil',
       center: LatLng(json['CenterLat'], json['CenterLon']),
       subDiv: (json['Subdivisions'] as List<dynamic>).map((data) => SubDiv.fromJson(data)).toList(),
+      corners: (json['Corners'] as List<dynamic>).map((corner) => LatLng(corner[0], corner[1])).toList(),
     );
   }
 }
diff --git a/app/lib/pages/widgets/interactive_polygon.dart b/app/lib/pages/widgets/interactive_polygon.dart
index 52968654d3d9eaec83169833ec8383ab5c278ec7..fbbc893d88d99f4734ea883f3aea419dbd6102c5 100644
--- a/app/lib/pages/widgets/interactive_polygon.dart
+++ b/app/lib/pages/widgets/interactive_polygon.dart
@@ -1,10 +1,11 @@
 import 'package:flutter/material.dart';
+import '../marker_handler/marker_data.dart';
 
 // InteractivePolygon returns a Polygon object wrapped in a GestureDetector
 // in order to make the Polygon clickable
 class InteractivePolygon extends StatelessWidget {
   final List<Offset> points;
-  final VoidCallback onTap;
+  final void Function(Measurement)? onTap;
   final Color color;
   final double strokeWidth;
 
@@ -18,7 +19,8 @@ class InteractivePolygon extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return GestureDetector(
-      onTap: onTap,
+      onTap: () {
+      },
       child: CustomPaint(
         painter: PolygonPainter(
           points: points,
diff --git a/app/lib/pages/widgets/map_widget.dart b/app/lib/pages/widgets/map_widget.dart
index ea3ec5811c64e396fdf84bb93dc15f2d858e598a..f7a6995a5a2e61e856b9903ecb5006f56fc659df 100644
--- a/app/lib/pages/widgets/map_widget.dart
+++ b/app/lib/pages/widgets/map_widget.dart
@@ -5,7 +5,7 @@ import 'quick_view_chart.dart';
 import 'stat_charts.dart';
 import 'sat_layer.dart';
 import 'package:flutter_map/flutter_map.dart';
-import 'package:latlong2/latlong.dart';
+import 'interactive_polygon.dart';
 
 
 /// MapContainerWidget is the main widget that contains the map with all
@@ -79,6 +79,17 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                             );
                           }).toList(),
                         ),*/
+                        // Custom polygon class for clickable polygons
+                        InteractivePolygon(
+                          // Map corner coordinates for each measurement to Offset object
+                          points: widget.markerList.expand((measurement) => measurement.corners.map((corner) =>
+                              Offset(corner.latitude, corner.longitude))).toList(),
+                          onTap: (Measurement measurement) { // Pass current measurement to onTap
+                            setState(() {
+                              selectedMarker = measurement; // Set selectedMarker to clicked measurement
+                            });
+                          },
+                        ),
                         MarkerLayer(
                           markers: widget.markerList.map((Measurement measurement) {
 
diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc
index 0936525a134986cdf0765898d85dcce201203bbb..48c87d4a51a052fa19f2af11e5b4e7735d8d4ba5 100644
Binary files a/server/map/__pycache__/get_markers.cpython-311.pyc and b/server/map/__pycache__/get_markers.cpython-311.pyc differ
diff --git a/server/map/add_new_water_body.py b/server/map/add_new_water_body.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/server/map/divide_measurement.py b/server/map/divide_measurement.py
deleted file mode 100644
index 020819000d0b1c79bdc3a36e04a408f2518d8569..0000000000000000000000000000000000000000
--- a/server/map/divide_measurement.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from math import pi, cos
-
-EARTH = 6378.137  # Radius of the earth in kilometer
-METER = (1 / ((2 * pi / 360) * EARTH)) / 1000  # 1 meter in degree
-OFFSET = 20  # Offset in meters
-
-
-def calculate_corners(lat, lng):
-    # From https://stackoverflow.com/questions/7477003/calculating-new-longitude-latitude-from-old-n-meters
-    # Formulas:
-    lat_pos = lat + (OFFSET * METER)
-    lng_pos = lng + (OFFSET * METER) / cos(lat * (pi / 180))
-
-    lat_neg = lat - (OFFSET * METER)
-    lng_neg = lng - (OFFSET * METER) / cos(lat * (pi / 180))
-
-    return [
-        (lat_neg, lng_pos),
-        (lat_pos, lng_pos),
-        (lat_pos, lng_neg),
-        (lat_neg, lng_neg)
-    ]
-
-# def div_measurement():
diff --git a/server/map/get_markers.py b/server/map/get_markers.py
index 2f5c6733bfe0528ce9d40441b450988994f9f76d..bf7e9e11c1d529040274e69ecc974726bcd88e14 100644
--- a/server/map/get_markers.py
+++ b/server/map/get_markers.py
@@ -1,4 +1,5 @@
 import json
+from math import pi, cos
 
 
 # get_markers requests all marker data or valid markers, converts the data to json, and writes
@@ -46,7 +47,7 @@ def get_all_markers(self, cursor, valid: bool, waterBodyName):
 
             # Check if measurement ID already exists in measurement_data
             if measurement_id in measurement_data:
-                # Check if the data object already exists in the list
+                # Create new subdivision within measurement if it does not already exist
                 if sub_division not in measurement_data[measurement_id]['Subdivisions']:
                     measurement_data[measurement_id]['Subdivisions'].append(sub_division)
 
@@ -63,6 +64,7 @@ def get_all_markers(self, cursor, valid: bool, waterBodyName):
                         'Active': bool(row[6])
                     },
                     'Subdivisions': [sub_division],  # Array of sub_division objects
+                    'Corners': calculate_corners(row[3], row[4]),  # Return list of corners calculated based on center coordinates
                 }
 
         # Convert dictionary values to list of measurements
@@ -89,3 +91,37 @@ def get_all_markers(self, cursor, valid: bool, waterBodyName):
 
     # Write marker data to response object
     self.wfile.write(marker_data.encode('utf-8'))
+
+
+EARTH = 6378.137  # Radius of the earth in kilometer
+METER = (1 / ((2 * pi / 360) * EARTH)) / 1000  # 1 meter in degree
+OFFSET = 20  # Offset in meters
+
+
+def calculate_corners(lat, lng):
+    """Calculate corners of polygon based on a center coordinate
+
+    Arguments:
+    lat -- center latitude
+    lng -- center longitude
+    """
+    # From https://stackoverflow.com/questions/7477003/calculating-new-longitude-latitude-from-old-n-meters
+    # Formulas:
+    '''
+    lat_pos = lat + (OFFSET * METER)
+    lng_pos = lng + (OFFSET * METER) / cos(lat * (pi / 180))
+
+    lat_neg = lat - (OFFSET * METER)
+    lng_neg = lng - (OFFSET * METER) / cos(lat * (pi / 180))
+
+    return [
+        (lat_neg, lng_pos),
+        (lat_pos, lng_pos),
+        (lat_pos, lng_neg),
+        (lat_neg, lng_neg)
+    ]    '''
+
+    return [(60.7798, 10.7062),  # NB: temporary hardcoded values
+            (60.7553, 10.7433),
+            (60.7718, 10.7975),
+            (60.7966, 10.7405)]