{"id":6274,"date":"2024-06-21T19:21:18","date_gmt":"2024-06-21T19:21:18","guid":{"rendered":"https:\/\/play.exploragame.com.ar\/?page_id=6274"},"modified":"2024-08-03T13:37:41","modified_gmt":"2024-08-03T13:37:41","slug":"mapa-postas-la-boca","status":"publish","type":"page","link":"https:\/\/play.exploragame.com.ar\/index.php\/mapa-postas-la-boca\/","title":{"rendered":"Mapa postas La Boca"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6274\" class=\"elementor elementor-6274\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dd18ae3 e-flex e-con-boxed e-con e-parent\" data-id=\"dd18ae3\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-104359a elementor-widget elementor-widget-html\" data-id=\"104359a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Mapa con Haz de Luz<\/title>\r\n    <link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.7.1\/dist\/leaflet.css\" \/>\r\n    <style>\r\n        body, html {\r\n            margin: 0;\r\n            padding: 0;\r\n            height: 100%;\r\n            width: 100%;\r\n        }\r\n        #map {\r\n            height: 100vh; \/* Altura completa de la ventana *\/\r\n            width: 100vw; \/* Ancho completo de la ventana *\/\r\n        }\r\n        .custom-control img {\r\n            width: 30px;\r\n            height: 30px;\r\n            background-color: white;\r\n            border-radius: 5px;\r\n            padding: 5px;\r\n            cursor: pointer;\r\n        }\r\n        .leaflet-top.leaflet-right {\r\n            top: 10px !important;\r\n        }\r\n        .icono-rotado {\r\n            transform-origin: center;\r\n        }\r\n        .alerta-distancia {\r\n            position: absolute;\r\n            top: 10px;\r\n            left: 50%;\r\n            transform: translateX(-50%);\r\n            background-color: rgba(255, 255, 255, 0.8);\r\n            padding: 10px;\r\n            border: 1px solid #ccc;\r\n            border-radius: 5px;\r\n            display: none;\r\n        }\r\n        .animacion-completo {\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background-color: transparent; \/* Fondo transparente *\/\r\n            z-index: 1000;\r\n            display: none;\r\n        }\r\n        .animacion-completo img {\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 50%;\r\n            transform: translate(-50%, -50%);\r\n            max-width: 80%;\r\n            max-height: 80%;\r\n        }\r\n        #contador {\r\n            position: absolute;\r\n            top: 5px; \/* Ajusta la distancia desde el borde superior *\/\r\n            left: 50%; \/* Ajusta la posici\u00f3n horizontal *\/\r\n            transform: translateX(-50%);\r\n            font-size: 24px;\r\n            font-weight: bold;\r\n            color: black;\r\n            background-color: white;\r\n            padding: 5px 10px;\r\n            border-radius: 5px;\r\n            z-index: 1000;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div id=\"map\"><\/div>\r\n<div id=\"alertaDistancia\" class=\"alerta-distancia\"><\/div>\r\n<div class=\"animacion-completo\" id=\"animacionCompleto\">\r\n    <img decoding=\"async\" src=\"https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/postas-Completas-1-1.gif\" alt=\"Postas Completas\">\r\n<\/div>\r\n<div id=\"contador\"><\/div>\r\n\r\n<audio id=\"audioAplauso\" preload=\"auto\">\r\n    <source src=\"https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/applause-2-31567.mp3\" type=\"audio\/mpeg\">\r\n    Tu navegador no soporta el elemento de audio.\r\n<\/audio>\r\n\r\n<audio id=\"audioFinalCountdown\" preload=\"auto\">\r\n    <source src=\"https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/clock-clock-sound-clock-clock-time-10343.mp3\" type=\"audio\/mpeg\">\r\n    Tu navegador no soporta el elemento de audio.\r\n<\/audio>\r\n\r\n<script src=\"https:\/\/unpkg.com\/leaflet@1.7.1\/dist\/leaflet.js\"><\/script>\r\n<script>\r\n    function initMap() {\r\n        var map = L.map('map', {\r\n            zoomControl: false \/\/ Desactivar los controles de zoom\r\n        }).setView([-34.6083, -58.3706], 13);\r\n\r\n        \/\/ A\u00f1adir capa de CartoDB\r\n        L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/voyager\/{z}\/{x}\/{y}{r}.png', {\r\n            maxZoom: 19,\r\n            attribution: '&copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> contributors &copy; <a href=\"https:\/\/carto.com\/attributions\">CARTO<\/a>'\r\n        }).addTo(map);\r\n\r\n        \/\/ Iconos personalizados\r\n        var iconoAzul = L.icon({\r\n            iconUrl: 'https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/marker-icon-Naranja.png',\r\n            iconSize: [25, 41],\r\n            iconAnchor: [12, 41],\r\n            popupAnchor: [1, -34],\r\n            shadowSize: [41, 41]\r\n        });\r\n\r\n        var iconoVerde = L.icon({\r\n            iconUrl: 'https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/marker-iconcorrect.png',\r\n            iconSize: [25, 41],\r\n            iconAnchor: [12, 41],\r\n            popupAnchor: [1, -34],\r\n            shadowSize: [41, 41]\r\n        });\r\n\r\n        \/\/ Array para almacenar todos los marcadores\r\n        var marcadores = [\r\n            { id: 'iglesiasanjuan', latlng: [-34.636720810048764, -58.35974758337216], icon: iconoAzul, url: 'https:\/\/play.exploragame.com.ar\/index.php\/la-boca-grupal-posta-san-juan-evangelista\/' },\r\n\r\n            { id: 'bomberosdentro', latlng: [-34.63537121169983, -58.36166414343098], icon: iconoAzul, url: 'https:\/\/play.exploragame.com.ar\/index.php\/la-boca-grupal-posta-bomberos-dentro\/' },\r\n            { id: 'maniqui', latlng: [-34.639255836587296, -58.363045237310885], icon: iconoAzul, url: 'https:\/\/play.exploragame.com.ar\/index.php\/la-boca-grupal-posta-conventillo-magallanes\/' },\r\n            { id: 'corso', latlng: [-34.63955635932455, -58.36283748807546], icon: iconoAzul, url: 'https:\/\/play.exploragame.com.ar\/index.php\/la-boca-grupal-posta-corsos\/' },\r\n\r\n\r\n\r\n            \/\/ Agrega m\u00e1s marcadores seg\u00fan sea necesario\r\n        ];\r\n\r\n        var markerObjects = {};\r\n\r\n        \/\/ Crear marcadores\r\n        marcadores.forEach(function(posta) {\r\n            var icon = getStoredIcon(posta.id) || posta.icon;\r\n            var marker = L.marker(posta.latlng, { icon: icon }).addTo(map)\r\n                .on('click', function() {\r\n                    if (userLocation) {\r\n                        var distancia = map.distance(userLocation, marker.getLatLng());\r\n                        if (distancia > 100) {\r\n                            marker.bindPopup(\"Esta posta est\u00e1 muy lejos de tu ubicaci\u00f3n\", { closeButton: false }).openPopup();\r\n                            mostrarAlertaDistancia();\r\n                        } else {\r\n                            if (marker.options.icon.options.iconUrl === iconoVerde.options.iconUrl) {\r\n                                marker.bindPopup(\"Esta posta est\u00e1 completa\", { closeButton: false }).openPopup();\r\n                            } else {\r\n                                window.open(posta.url, '_blank'); \/\/ Abrir en una nueva pesta\u00f1a\r\n                            }\r\n                        }\r\n                    } else {\r\n                        \/\/ Si no se puede obtener la ubicaci\u00f3n del usuario, abrir la posta\r\n                        window.open(posta.url, '_blank');\r\n                    }\r\n                });\r\n            markerObjects[posta.id] = marker;\r\n        });\r\n\r\n        \/\/ Funci\u00f3n para obtener el icono almacenado en cookies\r\n        function getStoredIcon(postaId) {\r\n            var storedIconUrl = getCookie(postaId);\r\n            if (storedIconUrl === 'iconoVerde') {\r\n                return iconoVerde;\r\n            } else {\r\n                return null; \/\/ Devolver null si no hay icono almacenado o es azul\r\n            }\r\n        }\r\n\r\n        \/\/ Funci\u00f3n para establecer el icono almacenado en cookies\r\n        function setStoredIcon(postaId, iconUrl) {\r\n            var expiryDate = new Date();\r\n            expiryDate.setTime(expiryDate.getTime() + (24 * 60 * 60 * 1000)); \/\/ Caducidad en 24 horas\r\n            document.cookie = `${postaId}=${iconUrl};expires=${expiryDate.toUTCString()};path=\/`;\r\n        }\r\n\r\n        \/\/ Funci\u00f3n para mostrar la alerta de distancia\r\n        function mostrarAlertaDistancia() {\r\n            document.getElementById('alertaDistancia').style.display = 'block';\r\n            setTimeout(function() {\r\n                document.getElementById('alertaDistancia').style.display = 'none';\r\n            }, 3000); \/\/ Ocultar la alerta despu\u00e9s de 3 segundos\r\n        }\r\n\r\n        \/\/ Escuchar mensajes desde las p\u00e1ginas de postas\r\n        window.addEventListener('message', function(event) {\r\n            if (event.data.postaId && markerObjects[event.data.postaId]) {\r\n                markerObjects[event.data.postaId].setIcon(iconoVerde);\r\n                setStoredIcon(event.data.postaId, 'iconoVerde');\r\n                checkAllPostasResolved();\r\n            }\r\n        });\r\n\r\n        \/\/ Funci\u00f3n para verificar si todas las postas est\u00e1n resueltas\r\n        function checkAllPostasResolved() {\r\n            var todasResueltas = Object.values(markerObjects).every(function(marker) {\r\n                return marker.options.icon.options.iconUrl === iconoVerde.options.iconUrl;\r\n            });\r\n\r\n            if (todasResueltas) {\r\n                mostrarAnimacionCompleto();\r\n            }\r\n        }\r\n\r\n        \/\/ Funci\u00f3n para mostrar la animaci\u00f3n de postas completas y redirigir despu\u00e9s\r\n        function mostrarAnimacionCompleto() {\r\n            var animacion = document.getElementById('animacionCompleto');\r\n            animacion.style.display = 'block';\r\n            document.getElementById('audioAplauso').play();\r\n            setTimeout(function() {\r\n                window.location.href = \"https:\/\/prueba.exploragame.com.ar\/index.php\/juego-completo\/\";\r\n            }, 5000); \/\/ Redirigir despu\u00e9s de 5 segundos\r\n        }\r\n\r\n        \/\/ Funci\u00f3n para obtener el valor de una cookie por su nombre\r\n        function getCookie(name) {\r\n            var nameEQ = name + \"=\";\r\n            var ca = document.cookie.split(';');\r\n            for (var i = 0; i < ca.length; i++) {\r\n                var c = ca[i];\r\n                while (c.charAt(0) === ' ') c = c.substring(1, c.length);\r\n                if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\r\n            }\r\n            return null;\r\n        }\r\n\r\n        \/\/ Comprobar el estado de las postas al cargar la p\u00e1gina\r\n        document.addEventListener('DOMContentLoaded', checkAllPostasResolved);\r\n\r\n        \/\/ Agregar control de ubicaci\u00f3n\r\n        var iconoUbicacion = L.control({ position: 'topright' });\r\n\r\n        iconoUbicacion.onAdd = function(map) {\r\n            var div = L.DomUtil.create('div', 'custom-control');\r\n            div.innerHTML = '<img decoding=\"async\" src=\"https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/current-location-icon-1.png\" style=\"width: 30px; height: 30px; background-color: white; border-radius: 5px; padding: 5px; cursor: pointer;\">';\r\n\r\n            div.onclick = function() {\r\n                if (userLocation) {\r\n                    map.setView(userLocation, 18); \/\/ Ajusta el zoom aqu\u00ed (18 es un ejemplo)\r\n                }\r\n            };\r\n\r\n            return div;\r\n        };\r\n\r\n        iconoUbicacion.addTo(map); \/\/ A\u00f1ade el control al mapa\r\n\r\n        \/\/ Variable para almacenar la ubicaci\u00f3n del usuario\r\n        var userLocation = null;\r\n        var userMarker = null;\r\n        var userDirection = null;\r\n        var userCircle = null;\r\n\r\n        \/\/ Funci\u00f3n para actualizar la ubicaci\u00f3n y orientaci\u00f3n del usuario\r\n        function updateUserLocation(position) {\r\n            userLocation = [position.coords.latitude, position.coords.longitude];\r\n            var heading = position.coords.heading;\r\n\r\n            \/\/ Actualizar marcadores y verificar distancia solo cuando se selecciona una posta\r\n            Object.values(markerObjects).forEach(function(marker) {\r\n                if (marker.options.icon.options.iconUrl === iconoAzul.options.iconUrl && marker.isPopupOpen()) {\r\n                    var distancia = map.distance(userLocation, marker.getLatLng());\r\n                    if (distancia > 100) {\r\n                        mostrarAlertaDistancia();\r\n                    }\r\n                }\r\n            });\r\n\r\n            if (!userMarker) {\r\n                userMarker = L.marker(userLocation, {\r\n                    icon: L.divIcon({\r\n                        html: `<img decoding=\"async\" src=\"https:\/\/prueba.exploragame.com.ar\/wp-content\/uploads\/2024\/06\/Diseno-sin-titulo-2024-06-19T200146.381.png\" class=\"icono-rotado\" style=\"width: 60px; height: 60px; transform: rotate(${heading}deg);\" \/>`,\r\n                        iconSize: [60, 60],\r\n                        iconAnchor: [30, 30],\r\n                        className: 'icono-personalizado'\r\n                    })\r\n                }).addTo(map);\r\n            } else {\r\n                userMarker.setLatLng(userLocation);\r\n                userMarker._icon.querySelector('img').style.transform = `rotate(${heading}deg)`;\r\n            }\r\n\r\n            if (!userCircle) {\r\n                userCircle = L.circle(userLocation, {\r\n                    color: 'transparent', \/\/ Sin borde\r\n                    fillColor: '#004AAD',\r\n                    fillOpacity: 0.2,\r\n                    radius: 25 \/\/ Radio en metros\r\n                }).addTo(map);\r\n            } else {\r\n                userCircle.setLatLng(userLocation);\r\n            }\r\n        }\r\n\r\n        \/\/ Observar la posici\u00f3n del usuario en tiempo real\r\n        if (navigator.geolocation) {\r\n            navigator.geolocation.watchPosition(updateUserLocation, function(error) {\r\n                console.error('Error obteniendo la ubicaci\u00f3n: ', error);\r\n            }, { enableHighAccuracy: true });\r\n        } else {\r\n            alert('Tu navegador no soporta Geolocalizaci\u00f3n.');\r\n        }\r\n\r\n        \/\/ Funci\u00f3n para iniciar y actualizar el contador\r\n        function iniciarContador() {\r\n            var tiempoInicial = 2 * 60 * 60; \/\/ 2 horas en segundos\r\n            var tiempoRestante = localStorage.getItem('tiempoRestante');\r\n            var ultimaActualizacion = localStorage.getItem('ultimaActualizacion');\r\n\r\n            if (tiempoRestante !== null && ultimaActualizacion !== null) {\r\n                var tiempoPasado = (Date.now() - parseInt(ultimaActualizacion)) \/ 1000;\r\n                tiempoInicial = Math.max(0, parseInt(tiempoRestante) - tiempoPasado);\r\n            }\r\n\r\n            var contadorElement = document.getElementById('contador');\r\n\r\n            function actualizarContador() {\r\n                var horas = Math.floor(tiempoInicial \/ 3600);\r\n                var minutos = Math.floor((tiempoInicial % 3600) \/ 60);\r\n                var segundos = Math.floor(tiempoInicial % 60); \/\/ Usar Math.floor aqu\u00ed\r\n\r\n                contadorElement.innerHTML = `${horas.toString().padStart(2, '0')}:${minutos.toString().padStart(2, '0')}:${segundos.toString().padStart(2, '0')}`;\r\n\r\n                if (tiempoInicial === 10) {\r\n                    document.getElementById('audioFinalCountdown').play();\r\n                }\r\n\r\n                if (tiempoInicial > 0) {\r\n                    tiempoInicial--;\r\n                    localStorage.setItem('tiempoRestante', tiempoInicial);\r\n                    localStorage.setItem('ultimaActualizacion', Date.now());\r\n                } else {\r\n                    \/\/ Opcional: puedes ejecutar alguna acci\u00f3n cuando el contador llegue a 0\r\n                }\r\n            }\r\n\r\n            actualizarContador();\r\n            setInterval(actualizarContador, 1000);\r\n        }\r\n\r\n        \/\/ Iniciar el contador al cargar la p\u00e1gina\r\n        document.addEventListener('DOMContentLoaded', iniciarContador);\r\n    }\r\n\r\n    \/\/ Inicializar el mapa\r\n    initMap();\r\n\r\n    \/\/ Bloquear el retroceso en el historial\r\n    window.addEventListener('popstate', function(event) {\r\n        history.pushState(null, null, document.URL);\r\n    });\r\n    history.pushState(null, null, document.URL);\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Mapa con Haz de Luz Tu navegador no soporta el elemento de audio. Tu navegador no soporta el elemento de audio.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"wf_page_folders":[12],"class_list":["post-6274","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/pages\/6274","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/comments?post=6274"}],"version-history":[{"count":25,"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/pages\/6274\/revisions"}],"predecessor-version":[{"id":7095,"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/pages\/6274\/revisions\/7095"}],"wp:attachment":[{"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/media?parent=6274"}],"wp:term":[{"taxonomy":"wf_page_folders","embeddable":true,"href":"https:\/\/play.exploragame.com.ar\/index.php\/wp-json\/wp\/v2\/wf_page_folders?post=6274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}