diff --git a/js/index.js b/js/index.js index 2a66b6d..2527191 100644 --- a/js/index.js +++ b/js/index.js @@ -35,6 +35,7 @@ deleteButton, drawToolbar, urlHash, + reverseRoute, saveWarningShown = false; // By default bootstrap-select use glyphicons @@ -70,6 +71,14 @@ }] }); + reverseRouteButton = L.easyButton( + 'fa-random', + function () { + routing.reverse(); + }, + i18next.t('map.reverse-route') + ); + deleteButton = L.easyButton( 'fa-trash-o', function () { @@ -227,7 +236,7 @@ routing.addTo(map); elevation.addBelow(map); - + sidebar = BR.sidebar({ defaultTabId: BR.conf.transit ? 'tab_itinerary' : 'tab_profile', listeningTabs: { @@ -240,7 +249,7 @@ } nogos.addTo(map); - drawToolbar = L.easyBar([drawButton, nogos.getButton(), deleteButton]).addTo(map); + drawToolbar = L.easyBar([drawButton, reverseRouteButton, nogos.getButton(), deleteButton]).addTo(map); nogos.preventRoutePointOnCreate(routing); if (BR.keys.strava) { diff --git a/js/plugin/Routing.js b/js/plugin/Routing.js index 4f45c29..cfb3241 100644 --- a/js/plugin/Routing.js +++ b/js/plugin/Routing.js @@ -299,4 +299,11 @@ BR.Routing = L.Routing.extend({ ,isDrawing: function () { return this._draw._enabled; } + + ,reverse: function() { + var waypoints = this.getWaypoints(); + waypoints.reverse(); + this.clear(); + this.setWaypoints(waypoints); + } }); diff --git a/locales/en.json b/locales/en.json index 1190d03..982149d 100644 --- a/locales/en.json +++ b/locales/en.json @@ -93,6 +93,7 @@ }, "opacity-slider": "Set transparency of route track and markers", "privacy": "Privacy", + "reverse-route": "Reverse route", "strava-biking": "Show Strava biking segments", "strava-running": "Show Strava running segments", "zoomInTitle": "Zoom in",