From 932036f3467c30958738620e0857cc29acb52197 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Fri, 11 Apr 2025 15:36:47 +0300 Subject: [PATCH] Enable km/mi switching in directions --- .../index/directions-route-output.js | 21 ++++++++++++++++++- config/locales/en.yml | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/index/directions-route-output.js b/app/assets/javascripts/index/directions-route-output.js index 017ddfa4c..1335d5ec3 100644 --- a/app/assets/javascripts/index/directions-route-output.js +++ b/app/assets/javascripts/index/directions-route-output.js @@ -13,10 +13,15 @@ OSM.DirectionsRouteOutput = function (map) { weight: 12 }); + let distanceUnits = "km"; let downloadURL = null; function translateDistanceUnits(m) { - return [m, "m", m / 1000, "km"]; + if (distanceUnits === "km") { + return [m, "m", m / 1000, "km"]; + } else { + return [m / 0.3048, "ft", m / 1609.344, "mi"]; + } } function formatTotalDistance(minorValue, minorName, majorValue, majorName) { @@ -117,6 +122,17 @@ OSM.DirectionsRouteOutput = function (map) { writeSummary(route); writeSteps(route); + $("#directions_distance_units_km").off().on("change", () => { + distanceUnits = "km"; + writeSummary(route); + writeSteps(route); + }); + $("#directions_distance_units_mi").off().on("change", () => { + distanceUnits = "mi"; + writeSummary(route); + writeSteps(route); + }); + const blob = new Blob([JSON.stringify(polyline.toGeoJSON())], { type: "application/json" }); URL.revokeObjectURL(downloadURL); downloadURL = URL.createObjectURL(blob); @@ -140,6 +156,9 @@ OSM.DirectionsRouteOutput = function (map) { .removeLayer(popup) .removeLayer(polyline); + $("#directions_distance_units_km").off(); + $("#directions_distance_units_mi").off(); + $("#directions_route_steps").empty(); URL.revokeObjectURL(downloadURL); diff --git a/config/locales/en.yml b/config/locales/en.yml index 19556fd4c..82329ae1e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3299,6 +3299,8 @@ en: distance_in_units: m: "%{distance}m" km: "%{distance}km" + ft: "%{distance}ft" + mi: "%{distance}mi" errors: no_route: "Couldn't find a route between those two places." no_place: "Sorry - couldn't locate '%{place}'." -- 2.39.5