Improve cadastral GPS reliability and mobile overlays

This commit is contained in:
livio committed 2026-10-02 08:38:14 +02:00
1 parent 29c3848a22
commit 5ea424b46c
7 files changed
+243 -30

No files matched your search

+48 -4
View File
@@ -50,6 +50,8 @@ const lmeState = {
gpsTrailStartedAt: null,
gpsWatchId: null,
lastPosition: null,
infoTimeoutSeconds: 3,
infoTimer: null,
fileImportBound: false,
resizeBound: false,
googleMapsLoading: null,
@@ -185,7 +187,9 @@ window.lmeMap = {
setLocalization,
setEntitlements,
importExternalGisFile,
showInfo: setInfo
showInfo: setInfo,
hideInfo,
setInfoTimeout
};
function setLocalization(options = {}) {
@@ -5433,13 +5437,24 @@ function refreshCadastreLayer() {
});
let errorShown = false;
cadastreLayer.on("tileerror", () => {
cadastreLayer.on("tileerror", event => {
const tile = event?.tile;
const retryCount = Number(tile?.dataset?.lmeRetry || 0);
if (tile && retryCount < 2) {
tile.dataset.lmeRetry = String(retryCount + 1);
window.setTimeout(() => {
const separator = tile.src.includes("?") ? "&" : "?";
tile.src = `${tile.src}${separator}_lme_retry=${Date.now()}`;
}, 450 * (retryCount + 1));
return;
}
if (errorShown) {
return;
}
errorShown = true;
setInfo("Layer catastali non caricati dal servizio AdE. Controlla la connessione e riprova.");
setInfo("Il servizio cartografico AdE non ha risposto. La connessione internet puo essere attiva: attendi qualche secondo e riprova.");
});
cadastreLayer.on("load", () => {
errorShown = false;
@@ -5905,7 +5920,36 @@ function cadastreUrl() {
}
function setInfo(text) {
setText("mapInfo", text);
const container = document.getElementById("mapInfo");
if (!container) return;
setText("mapInfoText", text);
container.hidden = false;
if (lmeState.infoTimer) {
window.clearTimeout(lmeState.infoTimer);
lmeState.infoTimer = null;
}
if (lmeState.infoTimeoutSeconds > 0) {
lmeState.infoTimer = window.setTimeout(hideInfo, lmeState.infoTimeoutSeconds * 1000);
}
}
function hideInfo() {
const container = document.getElementById("mapInfo");
if (container) container.hidden = true;
if (lmeState.infoTimer) {
window.clearTimeout(lmeState.infoTimer);
lmeState.infoTimer = null;
}
}
function setInfoTimeout(seconds) {
const value = Number(seconds);
lmeState.infoTimeoutSeconds = Number.isFinite(value) ? Math.min(30, Math.max(0, value)) : 3;
const container = document.getElementById("mapInfo");
if (container && !container.hidden) {
setInfo(document.getElementById("mapInfoText")?.textContent || "");
}
}
function setText(id, text) {