From 492797f2a58488e750b75e60f35cd76635eeb429 Mon Sep 17 00:00:00 2001 From: Marcus Jaschen Date: Wed, 17 Nov 2021 20:03:07 +0100 Subject: [PATCH] Add OpenStreetMap Notes Layer (#458) * use a local variable (best practices) * Add OpenStreetMap notes as overlay. This commit adds a new layer which renders OpenStreetMap notes in the current view. The layer can be activated via the "More" button in the layers sidebar. Fixes #439 --- README.md | 2 ++ js/LayersConfig.js | 8 +++++++- js/control/Layers.js | 2 ++ layers/config/overrides.js | 4 ++++ layers/config/tree.js | 3 ++- layers/extra/osm-notes.geojson | 14 ++++++++++++++ package.json | 6 ++++++ yarn.lock | 17 +++++++++++++++++ 8 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 layers/extra/osm-notes.geojson diff --git a/README.md b/README.md index 95ee00aa..ec4d8dd4 100644 --- a/README.md +++ b/README.md @@ -140,3 +140,5 @@ Copyright (c) 2018 Norbert Renner and [contributors](https://github.com/nrenner/ [CC0-1.0 License](https://github.com/mapbox/maki/blob/master/LICENSE.txt) - [temaki](https://github.com/ideditor/temaki) [CC0-1.0 License](https://github.com/ideditor/temaki/blob/main/LICENSE.md) +- [leaflet-osm-notes](https://github.com/osmlab/leaflet-osm-notes) + [The Unlicense](https://github.com/osmlab/leaflet-osm-notes/blob/gh-pages/LICENSE) diff --git a/js/LayersConfig.js b/js/LayersConfig.js index 33c57258..7c41726d 100644 --- a/js/LayersConfig.js +++ b/js/LayersConfig.js @@ -59,7 +59,7 @@ BR.LayersConfig = L.Class.extend({ _customizeLayers: function () { var propertyOverrides = BR.confLayers.getPropertyOverrides(); - for (id in propertyOverrides) { + for (var id in propertyOverrides) { var layer = BR.layerIndex[id]; if (layer) { @@ -238,6 +238,10 @@ BR.LayersConfig = L.Class.extend({ ); }, + createOpenStreetMapNotesLayer: function () { + return new leafletOsmNotes(); + }, + createLayer: function (layerData) { var props = layerData.properties; var url = props.url; @@ -322,6 +326,8 @@ BR.LayersConfig = L.Class.extend({ } } else if (props.dataSource === 'OverpassAPI') { layer = this.createOverpassLayer(props.query, props.icon); + } else if (props.dataSource === 'OpenStreetMapNotesAPI') { + layer = this.createOpenStreetMapNotesLayer(); } else { // JOSM var josmUrl = url; diff --git a/js/control/Layers.js b/js/control/Layers.js index a85ef3b7..8897e48e 100644 --- a/js/control/Layers.js +++ b/js/control/Layers.js @@ -118,6 +118,8 @@ BR.Layers = L.Class.extend({ if (dataSource === 'OverpassAPI') { layer = this._layersControl.layersConfig.createOverpassLayer(layerUrl); + } else if (dataSource === 'OpenStreetMapNotesAPI') { + layer = this._layersControl.layersConfig.createOpenStreetMapNotesLayer(); } else { layer = L.tileLayer(layerUrl); } diff --git a/layers/config/overrides.js b/layers/config/overrides.js index 8bb6aa48..3dcd7680 100644 --- a/layers/config/overrides.js +++ b/layers/config/overrides.js @@ -220,6 +220,10 @@ BR.confLayers.getPropertyOverrides = function() { 'nameShort': 'Mapillary', 'mapUrl': 'https://www.mapillary.com/app/?lat={lat}&lng={lon}&z={zoom}&menu=false' }, + 'osm-notes': { + 'nameShort': 'OSM Notes', + 'mapUrl': 'https://www.openstreetmap.org/#map={zoom}/{lat}/{lon}&layers=N' + }, 'openpt_map': { 'nameShort': 'openptmap', 'mapUrl': 'http://openptmap.org/?zoom={zoom}&lat={lat}&lon={lon}&layers=B0000TFT' diff --git a/layers/config/tree.js b/layers/config/tree.js index afcc1988..de8dde6f 100644 --- a/layers/config/tree.js +++ b/layers/config/tree.js @@ -72,7 +72,8 @@ BR.confLayers.tree = { 'Waymarked_Trails-Cycling', 'Waymarked_Trails-Hiking', 'Waymarked_Trails-MTB', - 'mapillary-coverage-raster' + 'mapillary-coverage-raster', + 'osm-notes' ], 'country': [ 'historic-place-contours', diff --git a/layers/extra/osm-notes.geojson b/layers/extra/osm-notes.geojson new file mode 100644 index 00000000..7d280ab1 --- /dev/null +++ b/layers/extra/osm-notes.geojson @@ -0,0 +1,14 @@ +{ + "geometry": null, + "properties": { + "attribution": { + "text": "© OpenStreetMap contributors", + "url": "https://www.openstreetmap.org/" + }, + "id": "osm-notes", + "name": "OpenStreetMap Notes", + "overlay": true, + "dataSource": "OpenStreetMapNotesAPI" + }, + "type": "Feature" +} diff --git a/package.json b/package.json index e2b91291..2f3afb70 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "leaflet-filelayer": "^1.2.0", "leaflet-geometryutil": "^0.9.1", "leaflet-hotline": "^0.4.0", + "leaflet-osm-notes": "osmlab/leaflet-osm-notes#af2aa811", "leaflet-plugins": "~3.0.0", "leaflet-providers": "^1.10.2", "leaflet-routing": "nrenner/leaflet-routing#e94e153", @@ -200,6 +201,11 @@ "images/*.+(png|gif)" ] }, + "leaflet-osm-notes": { + "main": [ + "leaflet-osm-notes.js" + ] + }, "url-search-params": { "main": "build/url-search-params.js" }, diff --git a/yarn.lock b/yarn.lock index fad692fe..bcdc1e0b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7784,6 +7784,13 @@ leaflet-hotline@^0.4.0: resolved "https://registry.yarnpkg.com/leaflet-hotline/-/leaflet-hotline-0.4.0.tgz#e01069836a9d2e2c78b1fa1db2013bd03c8ff8d9" integrity sha1-4BBpg2qdLix4sfodsgE70DyP+Nk= +leaflet-osm-notes@osmlab/leaflet-osm-notes#af2aa811: + version "0.0.1" + resolved "https://codeload.github.com/osmlab/leaflet-osm-notes/tar.gz/af2aa8116ee693c1d818df53f57809391c08f514" + dependencies: + moment "~2.0.0" + reqwest "~0.7.2" + leaflet-plugins@~3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/leaflet-plugins/-/leaflet-plugins-3.0.3.tgz#7c727ac79a37636b245dd1adc64e10c61b425864" @@ -8391,6 +8398,11 @@ mkdirp@^0.5.1, mkdirp@^0.5.5, "mkdirp@~0.3 || 0.4 || 0.5", mkdirp@~0.5.0: dependencies: minimist "^1.2.5" +moment@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.0.0.tgz#2bbc5b44c321837693ab6efcadbd46ed946211fe" + integrity sha1-K7xbRMMhg3aTq278rb1G7ZRiEf4= + mothership@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/mothership/-/mothership-0.2.0.tgz#93d48a2fbc3e50e2a5fc8ed586f5bc44c65f9a99" @@ -9953,6 +9965,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +reqwest@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/reqwest/-/reqwest-0.7.3.tgz#d7e249ba42690fc70dc9901f36ce4e33b0d43d85" + integrity sha1-1+JJukJpD8cNyZAfNs5OM7DUPYU= + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"