GPS anzeige verbessert und planung für abarbeitung der Route angefangen

This commit is contained in:
2026-05-24 11:00:49 +02:00
parent 1899a49f4d
commit 54516f29da
3 changed files with 263 additions and 5 deletions
+3
View File
@@ -331,6 +331,9 @@ header {
line-height: 1.9;
pointer-events: none;
}
.gps-quality-good { color: #00ff91; }
.gps-quality-mid { color: #FFB300; }
.gps-quality-bad { color: #FF5252; }
.c-tl { top: calc(13px * var(--cam-scale)); left: calc(13px * var(--cam-scale)); }
.c-tr { top: calc(13px * var(--cam-scale)); right: calc(13px * var(--cam-scale)); text-align: right; }
.c-bl { bottom: calc(13px * var(--cam-scale)); left: calc(13px * var(--cam-scale)); }
+26 -5
View File
@@ -74,7 +74,7 @@
</div>
<div class="c-bl">
GPS: <span id="gps-state">Offline</span><br>
SAT: <span id="gps-sats">--</span><br>
POS: <span id="gps-accuracy">--</span><br>
LAT: <span id="gps-lat">--</span><br>
LON: <span id="gps-lon">--</span>
</div>
@@ -603,17 +603,41 @@ function updateAxesDisplay(x, y) {
setText("dpy", formatAxis(y));
}
function setGpsAccuracyDisplay(valueMeters) {
var node = document.getElementById("gps-accuracy");
if (!node) return;
node.classList.remove("gps-quality-good", "gps-quality-mid", "gps-quality-bad");
if (typeof valueMeters !== "number" || isNaN(valueMeters) || valueMeters <= 0) {
node.textContent = "--";
return;
}
node.textContent = formatNumber(valueMeters, 1) + " m";
if (valueMeters <= 1.0) {
node.classList.add("gps-quality-good");
} else if (valueMeters <= 3.0) {
node.classList.add("gps-quality-mid");
} else {
node.classList.add("gps-quality-bad");
}
}
function updateGpsOverlayFromFix(message) {
if (!message) return;
markGpsFresh();
var hasFix = message.status && message.status.status >= 0;
if (!hasFix) {
setGpsAccuracyDisplay(NaN);
setText("gps-lat", "--");
setText("gps-lon", "--");
return;
}
var covariance = Array.isArray(message.position_covariance) ? Number(message.position_covariance[0]) : NaN;
var accuracyMeters = covariance > 0 ? Math.sqrt(covariance) : NaN;
setGpsAccuracyDisplay(accuracyMeters);
setText("gps-lat", formatNumber(Number(message.latitude || 0), 5));
setText("gps-lon", formatNumber(Number(message.longitude || 0), 5));
}
@@ -622,9 +646,6 @@ function updateGpsOverlayFromStatus(text) {
var value = String(text || "Offline");
markGpsFresh();
setText("gps-state", value);
var satMatch = value.match(/(\d+)\s*Sat/i);
setText("gps-sats", satMatch ? satMatch[1] : "--");
}
function updateModeDisplay() {
@@ -727,7 +748,7 @@ function clearRosLiveDisplay() {
liveIndicator.classList.add("is-offline");
}
setText("gps-state", "Offline");
setText("gps-sats", "--");
setGpsAccuracyDisplay(NaN);
setText("gps-lat", "--");
setText("gps-lon", "--");
setText("overlay-speed", "--");