From 76b48e1720e8758410cb108d236ff30c8e263554 Mon Sep 17 00:00:00 2001 From: marsalva Date: Wed, 25 Feb 2026 07:52:57 +0000 Subject: [PATCH] Actualizar calendario.html --- calendario.html | 57 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/calendario.html b/calendario.html index 3e4b1ca..8f54f40 100644 --- a/calendario.html +++ b/calendario.html @@ -507,29 +507,64 @@ function callClient() { const p = document.getElementById('detPhoneRaw').value; if (p) window.location.href = `tel:+34${p}`; else alert("Sin teléfono"); } function openWhatsApp() { const p = document.getElementById('detPhoneRaw').value; if (p) window.open(`https://wa.me/34${p}`, '_blank'); else alert("Sin teléfono"); } - function openMaps() { const a = document.getElementById('detAddress').innerText; if (a) window.open(`maps://?q=${encodeURIComponent(a)}`, '_blank'); } + + // BOTÓN VER MAPA CORREGIDO PARA ANDROID E IOS + function openMaps() { + const a = document.getElementById('detAddress').innerText; + if (a) { + window.open(`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(a)}`, '_blank'); + } + } + // CÁLCULO DE GPS CORREGIDO CON FALLBACK Y MANEJO DE ERRORES async function calculateDistance(dest) { - if(!navigator.geolocation) return; - document.getElementById('gpsLoading').classList.remove('hidden'); - document.getElementById('gpsResult').classList.add('hidden'); + const loading = document.getElementById('gpsLoading'); + const result = document.getElementById('gpsResult'); + + if(!navigator.geolocation) { + loading.innerHTML = 'GPS Inactivo'; + lucide.createIcons(); + return; + } + + loading.classList.remove('hidden'); + loading.innerHTML = ' GPS...'; + result.classList.add('hidden'); + lucide.createIcons(); navigator.geolocation.getCurrentPosition(async (pos) => { - const lat = pos.coords.latitude; const lon = pos.coords.longitude; + const lat = pos.coords.latitude; + const lon = pos.coords.longitude; try { - const res = await fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(dest + ', España')}`); - const data = await res.json(); - if (data && data[0]) { + // Intento 1: Dirección completa + let res = await fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(dest + ', España')}`); + let data = await res.json(); + + // Intento 2: Si falla (porque hay "pisos", "escaleras", etc), buscamos solo por CP y Población + if (!data || data.length === 0) { + const parts = dest.split(','); + const fallbackDest = parts.length > 1 ? parts[parts.length - 1].trim() : dest; + res = await fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(fallbackDest + ', España')}`); + data = await res.json(); + } + + if (data && data.length > 0) { const R = 6371; const dLat = (data[0].lat - lat) * Math.PI / 180; const dLon = (data[0].lon - lon) * Math.PI / 180; const a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(lat * Math.PI / 180) * Math.cos(data[0].lat * Math.PI / 180) * Math.sin(dLon/2) * Math.sin(dLon/2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); const km = R * c; - document.getElementById('gpsLoading').classList.add('hidden'); - document.getElementById('gpsResult').classList.remove('hidden'); + loading.classList.add('hidden'); + result.classList.remove('hidden'); document.getElementById('gpsKm').innerText = km.toFixed(1); document.getElementById('gpsMins').innerText = Math.round((km/35)*60)+5; + } else { + loading.innerHTML = 'No calculable'; } - } catch(e) { } + } catch(e) { + loading.innerHTML = 'Error de red'; + } + }, (err) => { + loading.innerHTML = 'Permiso GPS denegado'; }); }