diff --git a/javascript/buffer.js b/javascript/buffer.js index d6a7c7eb4c7bf365c52429310806dc0f718b2182..a04c5c7403034a29e03d81adfffb4efa294675f7 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 bd453b3c5319e7c1f1b3cee5fc0557b50437d100..b10ad624725d93982bdf4af7c4640fd25c13471b 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 c90b1493f01c10cc1df0eae775ee9dffa4d377af..d1af758779f2053651b310c400a047e9c9886fe7 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); }