diff --git a/frontend/js/main.js b/frontend/js/main.js index e77a76d..7243047 100644 --- a/frontend/js/main.js +++ b/frontend/js/main.js @@ -4883,16 +4883,19 @@ async function shareRideContext() { let token = (localStorage.getItem("baldav_live_token") || "").trim(); if (!url || !token) { appAlert("Сначала задай адрес и токен трансляции в профиле"); return; } let shareUrl = url.endsWith("/push") ? url.slice(0, -5) + "/share" : url.replace(/\/[^/]*$/, "/share"); - let track = (GPS.recording.points || []).map(p => [+p.lat, +p.lon]); + // Round coords to 5 decimals (~1 m) — enough to draw, and cuts the payload a lot + // (full doubles are ~2x longer). Roads can be big; this keeps the POST reasonable. + let r5 = v => Math.round((+v) * 1e5) / 1e5; + let track = (GPS.recording.points || []).map(p => [r5(p.lat), r5(p.lon)]); let route = []; try { let rid = localStorage.getItem("baldav_active_route"); - if (rid) { let r = await DB.getRoute(rid); if (r && r.points) route = r.points.map(p => [+p.lat, +p.lon]); } + if (rid) { let r = await DB.getRoute(rid); if (r && r.points) route = r.points.map(p => [r5(p.lat), r5(p.lon)]); } } catch (e) {} let roads = []; try { let segs = buildRoadSegments(await DB.getRoadPoints()); - roads = segs.map(s => ({ p: s.pts.map(q => [+q.lat, +q.lon]), t: s.atype || "b" })); + roads = segs.map(s => ({ p: s.pts.map(q => [r5(q.lat), r5(q.lon)]), t: s.atype || "b" })); } catch (e) {} showToast("Отдаю смотрящему..."); try {