From 82ccfe10b449566c02dc79085f1db5a09eefdca1 Mon Sep 17 00:00:00 2001
From: jshjelse <jshjelse@stud.ntnu.no>
Date: Sun, 8 Oct 2023 13:24:20 +0200
Subject: [PATCH] Ferdig

---
 javascript/difference.js          | 12 +++++++-----
 javascript/dissolve.js            |  2 +-
 javascript/intersect.js           | 12 +++++++-----
 javascript/turfFormatConverter.js | 29 ++++++++++++++++-------------
 javascript/union.js               |  5 +++++
 5 files changed, 36 insertions(+), 24 deletions(-)

diff --git a/javascript/difference.js b/javascript/difference.js
index 6be0cad..6b9f6d3 100644
--- a/javascript/difference.js
+++ b/javascript/difference.js
@@ -6,14 +6,16 @@ function difference() {
     var name = document.getElementById("differenceName").value;
 
     // MÃ¥ konverteres fra feature collection til multipolygon:
-    var coords1 = featureCollectionToMultiPolygon(layer1);
-    var coords2 = featureCollectionToMultiPolygon(layer2);
-    
-    var multiPolygon1 = turf.multiPolygon(coords1);
-    var multiPolygon2 = turf.multiPolygon(coords2);
+    var multiPolygon1 = featureCollectionToMultiPolygon(layer1);
+    var multiPolygon2 = featureCollectionToMultiPolygon(layer2);
 
     try {
         var difference = turf.difference(multiPolygon1, multiPolygon2);
+        
+        if (isMultiPolygon(difference)) {
+            difference = multiPolygonToFeatureCollection(difference);
+        }
+        
         var newLayer = L.geoJSON(difference, {style: getStyle()});
         
         overlayMaps[name] = newLayer;
diff --git a/javascript/dissolve.js b/javascript/dissolve.js
index d96954c..b81f94c 100644
--- a/javascript/dissolve.js
+++ b/javascript/dissolve.js
@@ -6,7 +6,7 @@ function dissolve() {
     try {
         var dissolved = turf.dissolve(layer);
         var newLayer = L.geoJSON(dissolved, {style: getStyle()});
-
+        
         overlayMaps[name] = newLayer;
 
         updateSidebar();
diff --git a/javascript/intersect.js b/javascript/intersect.js
index d403852..d04e02d 100644
--- a/javascript/intersect.js
+++ b/javascript/intersect.js
@@ -6,14 +6,16 @@ function intersection() {
     var name = document.getElementById("intersectionName").value;
     
     // MÃ¥ konverteres fra feature collection til multipolygon:
-    var coords1 = featureCollectionToMultiPolygon(layer1);
-    var coords2 = featureCollectionToMultiPolygon(layer2);
-    
-    var multiPolygon1 = turf.multiPolygon(coords1);
-    var multiPolygon2 = turf.multiPolygon(coords2);
+    var multiPolygon1 = featureCollectionToMultiPolygon(layer1);
+    var multiPolygon2 = featureCollectionToMultiPolygon(layer2);
     
     try {
         var intersection = turf.intersect(multiPolygon1, multiPolygon2);
+        
+        if (isMultiPolygon(intersection)) {
+            intersection = multiPolygonToFeatureCollection(intersection);
+        }
+
         var newLayer = new L.GeoJSON(intersection, {style: getStyle()});
         
         overlayMaps[name] = newLayer;
diff --git a/javascript/turfFormatConverter.js b/javascript/turfFormatConverter.js
index 00f6c7c..2b2e9d6 100644
--- a/javascript/turfFormatConverter.js
+++ b/javascript/turfFormatConverter.js
@@ -11,22 +11,25 @@ function featureCollectionToMultiPolygon(layer) { // layer er her et GeoJSON-lag
         for (var i = 0; i < features.length; i++) {
             coords.push(features[i]["geometry"]["coordinates"]);
         }
-        return coords;
+        return turf.multiPolygon(coords);
     }
 }
 
-/*
+function isMultiPolygon(layer) {
+    if (layer["geometry"]["type"] == "MultiPolygon") {
+        return true;
+    }
+    return false;
+}
+
 function multiPolygonToFeatureCollection(layer) {
-    if (layer["type"] == "MultiPolygon") {
-        var features = [];
-        for (var i = 0; i < layer["coordinates"].length; i++) {
-            var geometry = {
-                "type": "Polygon",
-                "coordinates": layer["geometry"][i]
-            }
-            coords.push(geometry);
-        }
-        return turf.featureCollection(features);
+    var features = [];
+    for (var i = 0; i < layer["geometry"]["coordinates"].length; i++) {
+        var geometry = {
+            "type": "Polygon",
+            "coordinates": layer["geometry"]["coordinates"][i]
+        };
+        features.push(turf.feature(geometry));
     }
+    return turf.featureCollection(features);
 }
-*/
diff --git a/javascript/union.js b/javascript/union.js
index 0237cc4..1e38d20 100644
--- a/javascript/union.js
+++ b/javascript/union.js
@@ -14,6 +14,11 @@ function union() {
 
     try {
         var union = turf.union(multiPolygon1, multiPolygon2);
+
+        if (isMultiPolygon(union)) {
+            union = multiPolygonToFeatureCollection(union);
+        }
+
         var newLayer = L.geoJSON(union, {style: getStyle()});
 
         overlayMaps[name] = newLayer;
-- 
GitLab