From 6364817b5b83adf099b370c951cc38170eb18cba Mon Sep 17 00:00:00 2001 From: Aditya <205600203+Rohilalala@users.noreply.github.com> Date: Wed, 28 Oct 2026 15:16:45 +0530 Subject: [PATCH] fix(directions): show a 9.96 km route as 10 km, not 10.0 km routeDistanceText picked one decimal while the raw kilometres were under 10, then rounded them for display, so 9.95 km or more read "10.0 km". It now picks the unit from the rounded tenth, as it already does at the metre/kilometre boundary. --- docs/CURRENT-STATE.md | 4 +++- src/data/directions.test.mjs | 2 ++ src/layers/directions/index.js | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index c55031a6a..ce635160b 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -4172,7 +4172,9 @@ animate). Disable clears all state. At the metre/kilometre boundary, route distance labels use the rounded ten-metre value to select the unit, switching to kilometres at 995 metres; -a 996-metre leg displays as `1.0 km` rather than `1000 m`. +a 996-metre leg displays as `1.0 km` rather than `1000 m`. Whole kilometres +start where the label would round to 10.0 km, so a 9.96 km route displays as +`10 km` rather than `10.0 km`. **Keys needed: none.** Directions works on a keyless boot, and the layer is off until the operator turns it on. diff --git a/src/data/directions.test.mjs b/src/data/directions.test.mjs index bf6e2878e..a51796edd 100644 --- a/src/data/directions.test.mjs +++ b/src/data/directions.test.mjs @@ -849,6 +849,8 @@ test('route numbers follow the page language and never break from their unit', ( assert.equal(routeDistanceText(994), '990\u00a0m'); assert.equal(routeDistanceText(996), '1.0\u00a0km'); assert.equal(routeDistanceText(1500), '1.5\u00a0km'); + assert.equal(routeDistanceText(9940), '9.9\u00a0km'); + assert.equal(routeDistanceText(9960), '10\u00a0km'); assert.equal(routeDistanceText(2_345_000), '2345\u00a0km'); assert.equal(routeDurationText(39), '39\u00a0s'); assert.equal(routeDurationText(59.4), '59\u00a0s'); diff --git a/src/layers/directions/index.js b/src/layers/directions/index.js index b8cceff02..9d0516c28 100644 --- a/src/layers/directions/index.js +++ b/src/layers/directions/index.js @@ -115,7 +115,8 @@ export function routeDistanceText(meters) { const tens = Math.round(meters / 10) * 10; if (tens < 1000) return formatQuantity(tens, 'm'); const km = meters / 1000; - return km < 10 + // Pick the unit from the tenth it prints: 9.96 km read "10.0 km". + return Math.round(meters / 100) < 100 ? formatQuantity(km, 'km', { minimumFractionDigits: 1, maximumFractionDigits: 1,