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';
});
}