diff --git a/CHANGELOG.md b/CHANGELOG.md index c2d8ad5..7ff4e7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - infobox: link to geouri with node's coordinates - infobox: show node id - map: locate user +- map: adding custom layers from leaflet.providers - nodelist: sort by uptime fixed ### Fixed bugs: diff --git a/images b/images new file mode 120000 index 0000000..e67f0fe --- /dev/null +++ b/images @@ -0,0 +1 @@ +bower_components/leaflet/dist/images \ No newline at end of file diff --git a/lib/map.js b/lib/map.js index 4601d9c..57e0ff0 100644 --- a/lib/map.js +++ b/lib/map.js @@ -123,6 +123,8 @@ define(["d3", "leaflet", "moment", "locationmarker", "leaflet.label", var groupOnline, groupOffline, groupNew, groupLost, groupLines var map, userLocation + var layerControl + var customLayers = new Set() var locateUserButton = new LocateButton(function (d) { if (d) @@ -160,18 +162,39 @@ define(["d3", "leaflet", "moment", "locationmarker", "leaflet.label", } } + function addLayer(layerName) { + if (customLayers.has(layerName)) + return + + try { + var layer = L.tileLayer.provider(layerName) + layerControl.addBaseLayer(layer, layerName) + customLayers.add(layerName) + + if (!layerControl.added) { + layerControl.addTo(map) + layerControl.added = true + } + + if (localStorageTest()) + localStorage.setItem("map/customLayers", JSON.stringify(Array.from(customLayers))) + } catch (e) { + return + } + } + var el = document.createElement("div") el.classList.add("map") self.div = el map = L.map(el, options) - L.tileLayer("https://otile{s}-s.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg", { - subdomains: "1234", - type: "osm", - attribution: "Tiles © MapQuest, Data CC-BY-SA OpenStreetMap", - maxZoom: 18 - }).addTo(map) + var baseLayer = L.tileLayer("https://otile{s}-s.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg", { + subdomains: "1234", + type: "osm", + attribution: "Tiles © MapQuest, Data CC-BY-SA OpenStreetMap", + maxZoom: 18 + }).addTo(map) map.on("locationfound", locationFound) map.on("locationerror", locationError) @@ -179,9 +202,20 @@ define(["d3", "leaflet", "moment", "locationmarker", "leaflet.label", map.addControl(locateUserButton) map.addControl(new AddLayerButton(function () { - L.tileLayer.provider(prompt()).addTo(map) + /*eslint no-alert:0*/ + var layerName = prompt("Leaflet Provider:") + addLayer(layerName) })) + layerControl = L.control.layers({"MapQuest": baseLayer}, [], {position: "bottomright"}) + + if (localStorageTest()) { + var layers = JSON.parse(localStorage.getItem("map/customLayers")) + + if (layers) + layers.forEach(addLayer) + } + var nodeDict = {} var linkDict = {} var highlight diff --git a/tasks/build.js b/tasks/build.js index c79c1ee..e36ecbd 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -41,6 +41,12 @@ module.exports = function(grunt) { expand: true, dest: "build/", cwd: "bower_components/ionicons/" + }, + leafletImages: { + src: [ "images/*" ], + expand: true, + dest: "build/", + cwd: "bower_components/leaflet/dist/" } }, sass: {