From 2e36119852ea8d1a9c11e8da199a43431c7926ce Mon Sep 17 00:00:00 2001
From: jshjelse <jshjelse@stud.ntnu.no>
Date: Mon, 23 Oct 2023 16:23:30 +0200
Subject: [PATCH] =?UTF-8?q?F=C3=A5tt=20p=C3=A5=20mer=20omskriving=20av=20l?=
 =?UTF-8?q?ayer-objekt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 javascript/buffer.js              |  3 +--
 javascript/dissolve.js            |  6 +++++
 javascript/turfFormatConverter.js | 37 +++++++++++++++++++++++++------
 3 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/javascript/buffer.js b/javascript/buffer.js
index d6a7c7e..a04c5c7 100644
--- a/javascript/buffer.js
+++ b/javascript/buffer.js
@@ -36,8 +36,7 @@ function makeBuffer() {
         var buffer = turf.buffer(layer, distance, {units: "meters"}); // Lager buffer
         
         if (document.getElementById("bufferCheck").checked) { // Om en har huket av for at en skal 'dissolve' gjøres det
-            // Dette er nytt
-            console.log(JSON.stringify(buffer));
+            // Dette er nytt:
             if (isMultiPolygon(buffer)) { // Kan ikke sende MultiPolygon inn i dissolved
                 buffer = multiPolygonToFeatureCollection(buffer);
             }
diff --git a/javascript/dissolve.js b/javascript/dissolve.js
index bd453b3..b10ad62 100644
--- a/javascript/dissolve.js
+++ b/javascript/dissolve.js
@@ -22,6 +22,12 @@ function doDissolve() {
     
     // Prøver å kjøre dissolve-funksjonen:
     try {
+        // Dette er nytt:
+        if (isMultiPolygon(layer)) {
+            layer = multiPolygonToFeatureCollection(layer);
+        }
+        //#
+
         var dissolved = turf.dissolve(layer); // Kjører dissolve
         var newLayer = L.geoJSON(dissolved, {style: getStyle()});
         
diff --git a/javascript/turfFormatConverter.js b/javascript/turfFormatConverter.js
index c90b149..d1af758 100644
--- a/javascript/turfFormatConverter.js
+++ b/javascript/turfFormatConverter.js
@@ -19,7 +19,7 @@ function featureCollectionToMultiPolygon(layer) { // Funksjon som gjør om featu
 function isMultiPolygon(layer) { // Inneholder 'layer' features som er MultiPolygon?
     more = false;
 
-    try {
+    try { // Justerer i forhold til hvor mye innhold 'layer' har
         if (layer["features"]) {
             more = true;
         }
@@ -41,14 +41,37 @@ function isMultiPolygon(layer) { // Inneholder 'layer' features som er MultiPoly
 
 function multiPolygonToFeatureCollection(layer) {// Funksjon som gjør om features i 'layer' til FeatureCollection istedenfor MultiPolygon
     // 'layer' er her et GeoJSON-lag
+
+    more = false;
+
+    try {
+        if (layer["features"]) {
+            more = true;
+        }
+    } catch {}
+
     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));
+
+    if (more) {
+        for (var i = 0; i < layer["features"]; i++) {
+            for (var j = 0; j < layer["features"][i]["geometry"]["coordinates"].length; j++) {
+                var geometry = {
+                    "type": "Polygon",
+                    "coordinates": layer["features"][i]["geometry"]["coordinates"][j]
+                };
+                features.push(turf.feature(geometry));
+            }
+        }
+    } else {
+        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);
 }
 
-- 
GitLab