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/mapChange.js b/javascript/mapChange.js index 229307115f9e236237be68aa13571f5b654a7d6b..2d0d5c1a58bd3d401006eebb81419c4776230780 100644 --- a/javascript/mapChange.js +++ b/javascript/mapChange.js @@ -1,234 +1,107 @@ // Variabler: var points = { - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4044907, 63.4173049] - }, - "properties": { - "name": "NTNU Gløshaugen" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4696324, 63.4079572] - }, - "properties": { - "name": "NTNU Dragvoll" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.388918, 63.4203714] - }, - "properties": { - "name": "NTNU Øya" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4347967, 63.4235678] - }, - "properties": { - "name": "NTNU Tyholt" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4143153, 63.433756] - }, - "properties": { - "name": "NTNU Solsiden" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4336351, 63.4138729] - }, - "properties": { - "name": "NTNU Moholt" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4032871, 63.4340888] - }, - "properties": { - "name": "NTNU Olavskvartalet" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4071882, 63.4107064] - }, - "properties": { - "name": "NTNU Lerkendal og Valgrinda" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.3861107, 63.4288662] - }, - "properties": { - "name": "NTNU Kalvskinnet" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4540302, 63.4473022] - }, - "properties": { - "name": "NTNU Ringve" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.3483128, 63.4415347] - }, - "properties": { - "name": "NTNU Heggdalen" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4492127, 63.4521411] - }, - "properties": { - "name": "NTNU Østmarka" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.3981586, 63.4373727] - }, - "properties": { - "name": "NTNU Brattørkaia" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.3992594, 63.4152944] - }, - "properties": { - "name": "NTNU Elgeseter" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4837531, 63.4393659] - }, - "properties": { - "name": "NTNU Rotvoll" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [10.4660445, 63.42338] - }, - "properties": { - "name": "NTNU Tunga" - } - } - ] + "type": "FeatureCollection", + "features": [ + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4044907, 63.4173049]}, "properties": {"category": "Universitet", "name": "NTNU Gløshaugen"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4696324, 63.4079572]}, "properties": {"category": "Universitet", "name": "NTNU Dragvoll"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.388918, 63.4203714]}, "properties": {"category": "Universitet", "name": "NTNU Øya"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4347967, 63.4235678]}, "properties": {"category": "Universitet", "name": "NTNU Tyholt"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4143153, 63.433756]}, "properties": {"category": "Universitet", "name": "NTNU Solsiden"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4336351, 63.4138729]}, "properties": {"category": "Universitet", "name": "NTNU Moholt"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4032871, 63.4340888]}, "properties": {"category": "Universitet", "name": "NTNU Olavskvartalet"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4071882, 63.4107064]}, "properties": {"category": "Universitet", "name": "NTNU Lerkendal og Valgrinda"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3861107, 63.4288662]}, "properties": {"category": "Universitet", "name": "NTNU Kalvskinnet"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4540302, 63.4473022]}, "properties": {"category": "Universitet", "name": "NTNU Ringve"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3483128, 63.4415347]}, "properties": {"category": "Universitet", "name": "NTNU Heggdalen"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4492127, 63.4521411]}, "properties": {"category": "Universitet", "name": "NTNU Østmarka"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3981586, 63.4373727]}, "properties": {"category": "Universitet", "name": "NTNU Brattørkaia"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3992594, 63.4152944]}, "properties": {"category": "Universitet", "name": "NTNU Elgeseter"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4837531, 63.4393659]}, "properties": {"category": "Universitet", "name": "NTNU Rotvoll"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4660445, 63.42338]}, "properties": {"category": "Universitet", "name": "NTNU Tunga"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4176387, 63.4141732]}, "properties": {"category": "Studentby", "name": "Berg Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4301549, 63.4110984]}, "properties": {"category": "Studentby", "name": "Moholt Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4372857, 63.3989126]}, "properties": {"category": "Studentby", "name": "Steinan Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3918823, 63.420511]}, "properties": {"category": "Studentby", "name": "Bloksberg Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4382451, 63.4116778]}, "properties": {"category": "Studentby", "name": "Karinelund Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4945864, 63.4211031]}, "properties": {"category": "Studentby", "name": "Jakobsliveien 55"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.396918, 63.4226982]}, "properties": {"category": "Studentby", "name": "Klostergata 18"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3963873, 63.4227505]}, "properties": {"category": "Studentby", "name": "Klostergata 20"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3891634, 63.4232409]}, "properties": {"category": "Studentby", "name": "Klostergata 56"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4126211, 63.4147073]}, "properties": {"category": "Studentby", "name": "Nedre Berg Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3973319, 63.418334]}, "properties": {"category": "Studentby", "name": "Magnus den godes gate 2"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4037983, 63.4215247]}, "properties": {"category": "Studentby", "name": "Nedre Singsakerslette"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3890993, 63.4276236]}, "properties": {"category": "Studentby", "name": "Sverresgate 8"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4122453, 63.4337663]}, "properties": {"category": "Studentby", "name": "Nedre elvehavn Studentby"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.3982518, 63.4163341]}, "properties": {"category": "Studentby", "name": "Teknobyen Studentboliger"}}, + {"type": "Feature", "geometry": {"type": "Point", "coordinates": [10.4003657, 63.4117822]}, "properties": {"category": "Studentby", "name": "Lerkendal Studentby"}} + ] }; var m = "m1"; // Hvilket kart en bruker var layersOnMap = []; // Hvilke kartlag som var på før en byttet til "m2" -var NTNU_points = L.geoJSON(points, {style: {color: "blue"}}).bindPopup(function(point) {return point.feature.properties.name;}) + +var NTNU_points = L.geoJSON(points).bindPopup(function(point) {return "<b>" + point.feature.properties.category + "</b>" + "<br>" + point.feature.properties.name;}) // Bytter layout på nettsiden ved kartbytte function changeMap() { - - // Hvis en box allerede er åpen, må denne lukkes først: - - if (boolskBox) { - closeBox(box); - } + + // Hvis en box allerede er åpen, må denne lukkes først: + + if (boolskBox) { + closeBox(box); + } - // Avhengig av hvilket kart en allerede har oppe, bytter en til motsatt status: + // Avhengig av hvilket kart en allerede har oppe, bytter en til motsatt status: - if (m == "m1") { - m = "m2"; - - // Endrer knappene i menyen: - document.getElementById("buttons1").style.display = "none"; - document.getElementById("buttons2").style.display = "flex"; + if (m == "m1") { + m = "m2"; + + // Endrer knappene i menyen: + document.getElementById("buttons1").style.display = "none"; + document.getElementById("buttons2").style.display = "flex"; - // Endrer knappene nedrest til høyre i kartet: - document.getElementById("sidebarOpener").style.display = "none"; - document.getElementById("mapChanger").style.marginLeft = "0"; + // Endrer knappene nedrest til høyre i kartet: + document.getElementById("sidebarOpener").style.display = "none"; + document.getElementById("mapChanger").style.marginLeft = "0"; - // Skjuler synlige kartlag i kartet: - for (key in overlayMaps) { - var layer = overlayMaps[key]; - if (map.hasLayer(layer)) { - handleLayer(key); - layersOnMap.push(key); - } - } + // Skjuler synlige kartlag i kartet: + for (key in overlayMaps) { + var layer = overlayMaps[key]; + if (map.hasLayer(layer)) { + handleLayer(key); + layersOnMap.push(key); + } + } - // Legger til nye punkt-markører i kartet: - NTNU_points.addTo(map); - } else if (m == "m2") { - m = "m1"; + // Legger til nye punkt-markører i kartet: + NTNU_points.addTo(map); + } else if (m == "m2") { + m = "m1"; - // Endrer knappene i menyen: - document.getElementById("buttons1").style.display = "flex"; - document.getElementById("buttons2").style.display = "none"; + // Endrer knappene i menyen: + document.getElementById("buttons1").style.display = "flex"; + document.getElementById("buttons2").style.display = "none"; - // Endrer knappene nedrest til høyre i kartet: - document.getElementById("sidebarOpener").style.display = "block"; - document.getElementById("mapChanger").style.marginLeft = "8vh"; + // Endrer knappene nedrest til høyre i kartet: + document.getElementById("sidebarOpener").style.display = "block"; + document.getElementById("mapChanger").style.marginLeft = "8vh"; - // Fjerner punkt-markørene og eventuelle voronoi- og TIN-diagram fra kartet: - if (map.hasLayer(NTNU_points)) { - map.removeLayer(NTNU_points); - } - if (isVoronoi) { - voronoi(); - } - if (isTIN) { - TIN(); - } + // Fjerner punkt-markørene og eventuelle voronoi- og TIN-diagram fra kartet: + if (map.hasLayer(NTNU_points)) { + map.removeLayer(NTNU_points); + } + if (isVoronoi) { + voronoi(); + } + if (isTIN) { + TIN(); + } - // Legger til kartlagene som lå i kartet før en byttet kartmodus: - while (layersOnMap.length > 0) { - handleLayer(layersOnMap.shift()); - } + // Legger til kartlagene som lå i kartet før en byttet kartmodus: + while (layersOnMap.length > 0) { + handleLayer(layersOnMap.shift()); } + } } 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;