diff --git a/javascript/difference.js b/javascript/difference.js index 6be0cadb9bc02f4e0619a5cf070c048b2db4a014..6b9f6d3774231022efd6460327791c97b30ddd52 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 d96954c424ddd951633223f6e1941d4afbef6a98..b81f94cdb64fe9549ba76e6059c5a1b1eb702c2d 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 d403852dd0c4328fda439aa7fc153cb543d22557..d04e02df4c5fdf6d683b0ddcdc23b517ce2bded8 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 00f6c7ccca40e625e95a25c10fa440e1aefc9375..2b2e9d6bd07d7bd04a26dccfe4f74f0f3c9a7ca9 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 0237cc49eb617e455c033f18bdf1e567a314996a..1e38d208fe5b734cc4dc5653875461a6a431067d 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;