diff --git a/app/lib/data_classes.dart b/app/lib/data_classes.dart
index 8de99433b443b8ddcb9f3ed213c34e6496ffa034..a3eebb60315d2da6f1f21e945a1b060ae81133a7 100644
--- a/app/lib/data_classes.dart
+++ b/app/lib/data_classes.dart
@@ -34,6 +34,7 @@ class Measurement {
 class SubDiv {
   String sub_div_id;
   int groupID;
+  String group_id;
   double minThickness;
   double avgThickness;
   LatLng center;
@@ -44,6 +45,7 @@ class SubDiv {
   SubDiv({
     required this.sub_div_id,
     required this.groupID,
+    required this.group_id,
     required this.minThickness,
     required this.avgThickness,
     required this.center,
@@ -56,6 +58,7 @@ class SubDiv {
     return SubDiv(
       sub_div_id: json['SubdivID'].toString(),
       groupID: json['GroupID'],
+      group_id: '', // Initialise empty, will be set later
       minThickness: json['MinThickness'],
       avgThickness: json['AvgThickness'],
       center: LatLng(json['CenLatitude'], json['CenLongitude']),
diff --git a/app/lib/widgets/choropleth_map.dart b/app/lib/widgets/choropleth_map.dart
index 2ab4eb52757d577b7095eefde673b8a3157e206f..6df3dfb8e4d9d92459bbecadca2d061c147db3b9 100644
--- a/app/lib/widgets/choropleth_map.dart
+++ b/app/lib/widgets/choropleth_map.dart
@@ -46,24 +46,22 @@ class _ChoroplethMapState extends State<ChoroplethMap> {
     super.initState();
     // Extract all subdivisions from list of measurements
     for (Measurement measurement in widget.measurements) {
+      String measurement_id = measurement.measurementID.toString();
       for (SubDiv subdivision in measurement.subDivs) {
+        // Construct concatenated group ID for rendering of groups
+        subdivision.group_id = measurement_id + "-"+ subdivision.groupID.toString();
+        print("Constructued groupID: ${subdivision.group_id}");
         subdivisions.add(subdivision);
       }
-    };
-
-    // ?Should the map be pre-divided into groups?
-
-    // Parse relation to json
-    // Make a list of key value pairs (key: groupID, value: appended shapes)
-    // Parse back to Uint8list
+    }
 
     // Initialise data source
     dataSource = MapShapeSource.memory(
       widget.relation,
-      shapeDataField: 'sub_div_id',
+      shapeDataField: 'group_id',
       dataCount: subdivisions.length,
       primaryValueMapper: (int index) =>
-      subdivisions[index].sub_div_id,
+      subdivisions[index].group_id,
       shapeColorValueMapper: (int index) =>
       subdivisions[index].avgThickness, // NB will later be minThickness, fix in server first
       shapeColorMappers: const [