trackme share: round coords to 5 decimals (~1m) to shrink the payload

This commit is contained in:
4aiman 2026-10-27 01:10:15 +03:00
commit aae9c55e1a

View file

@ -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 {