{"id":2012,"date":"2026-02-19T02:28:04","date_gmt":"2026-02-19T02:28:04","guid":{"rendered":"https:\/\/adreamstudios.com\/?page_id=2012"},"modified":"2026-02-19T02:28:04","modified_gmt":"2026-02-19T02:28:04","slug":"all-gps","status":"publish","type":"page","link":"https:\/\/adreamstudios.com\/?page_id=2012","title":{"rendered":"All GPS"},"content":{"rendered":"\r\n<div id=\"gps-ar-container\" class=\"gps-ar-container\">\r\n    <div class=\"gps-ar-wrapper\">\r\n        <!-- Header -->\r\n        <div class=\"gps-ar-header\">\r\n            <h1 class=\"gps-ar-title\">All GPS AR<\/h1>\r\n            <p class=\"gps-ar-subtitle\">Discover AR experiences at GPS locations<\/p>\r\n        <\/div>\r\n\r\n        <!-- Location Status Card -->\r\n        <div class=\"gps-ar-card\">\r\n            <div class=\"gps-ar-card-header\">\r\n                <h2 class=\"gps-ar-card-title\">\r\n                    <span class=\"gps-ar-icon\">\ud83d\udccd<\/span>\r\n                    Location Status\r\n                <\/h2>\r\n                <p class=\"gps-ar-card-description\">\r\n                    Enable location tracking to discover nearby AR experiences\r\n                <\/p>\r\n            <\/div>\r\n            <div class=\"gps-ar-card-content\">\r\n                <div id=\"gps-ar-location-status\">\r\n                    <!-- Status content will be dynamically inserted by JavaScript -->\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- AR Viewer Buttons Card -->\r\n        <div class=\"gps-ar-card\" id=\"gps-ar-viewer-buttons\" style=\"display: none;\">\r\n            <div class=\"gps-ar-card-header\">\r\n                <h2 class=\"gps-ar-card-title\">\r\n                    <span class=\"gps-ar-icon\">\ud83c\udfaf<\/span>\r\n                    AR Viewers\r\n                <\/h2>\r\n                <p class=\"gps-ar-card-description\">\r\n                    You're near a target location! Choose an AR experience to view\r\n                <\/p>\r\n            <\/div>\r\n            <div class=\"gps-ar-card-content\">\r\n                <div class=\"gps-ar-viewer-buttons-grid\">\r\n                    <a href=\"#\" \r\n                       id=\"gps-ar-2d-viewer-btn\" \r\n                       class=\"gps-ar-btn gps-ar-btn-primary gps-ar-btn-full\"\r\n                       target=\"_blank\"\r\n                       style=\"display: none;\">\r\n                        <span>\ud83d\uddbc\ufe0f<\/span>\r\n                        <span>View 2D AR Target<\/span>\r\n                    <\/a>\r\n                    <a href=\"#\" \r\n                       id=\"gps-ar-3d-viewer-btn\" \r\n                       class=\"gps-ar-btn gps-ar-btn-primary gps-ar-btn-full\"\r\n                       target=\"_blank\">\r\n                        <span>\ud83c\udfa8<\/span>\r\n                        <span>View 3D AR Model<\/span>\r\n                    <\/a>\r\n                    <button \r\n                       id=\"gps-ar-play-audio-btn\" \r\n                       class=\"gps-ar-btn gps-ar-btn-primary gps-ar-btn-full\"\r\n                       style=\"display: none; cursor: pointer; border: none; text-align: center; padding: 1rem; font-size: 1rem; font-weight: 600; width: 100%;\">\r\n                        <span class=\"gps-ar-audio-icon\">\u25b6\ufe0f<\/span>\r\n                        <span class=\"gps-ar-audio-text\">Play Audio<\/span>\r\n                    <\/button>\r\n                    <a href=\"#\"\r\n                       id=\"gps-ar-view-video-btn\"\r\n                       class=\"gps-ar-btn gps-ar-btn-primary gps-ar-btn-full\"\r\n                       target=\"_blank\"\r\n                       rel=\"noopener noreferrer\"\r\n                       style=\"display: none;\">\r\n                        <span>\ud83c\udfac<\/span>\r\n                        <span>View Video<\/span>\r\n                    <\/a>\r\n                    <a href=\"#\"\r\n                       id=\"gps-ar-custom-link-btn\"\r\n                       class=\"gps-ar-btn gps-ar-btn-primary gps-ar-btn-full\"\r\n                       target=\"_blank\"\r\n                       rel=\"noopener noreferrer\"\r\n                       style=\"display: none;\">\r\n                        <span>\ud83d\udd17<\/span>\r\n                        <span class=\"gps-ar-custom-link-label\">Open link<\/span>\r\n                    <\/a>\r\n                    <button\r\n                       id=\"gps-ar-refresh-nearest-btn\"\r\n                       class=\"gps-ar-btn gps-ar-btn-outline gps-ar-btn-full\"\r\n                       type=\"button\">\r\n                        <span>\ud83d\udd04<\/span>\r\n                        <span>Refresh nearest targets<\/span>\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Nearby Locations Card -->\r\n        <div class=\"gps-ar-card\" id=\"gps-ar-nearby-locations-wrapper\">\r\n            <div class=\"gps-ar-card-header\">\r\n                <h2 class=\"gps-ar-card-title\">\r\n                    <span class=\"gps-ar-icon\">\ud83d\uddfa\ufe0f<\/span>\r\n                    Nearby Locations\r\n                <\/h2>\r\n                <p class=\"gps-ar-card-description\">\r\n                    Target locations within range\r\n                <\/p>\r\n            <\/div>\r\n            <div class=\"gps-ar-card-content\">\r\n                <div id=\"gps-ar-nearby-locations\">\r\n                    <!-- Nearby locations will be dynamically inserted by JavaScript -->\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n    <div id=\"gps-ar-map-modal\" class=\"gps-ar-map-modal\" hidden aria-hidden=\"true\" role=\"dialog\" aria-labelledby=\"gps-ar-map-modal-title\" aria-modal=\"true\">\r\n        <div class=\"gps-ar-map-modal-backdrop\" id=\"gps-ar-map-modal-backdrop\"><\/div>\r\n        <div class=\"gps-ar-map-modal-dialog\">\r\n            <div class=\"gps-ar-map-modal-header\">\r\n                <h3 id=\"gps-ar-map-modal-title\" class=\"gps-ar-map-modal-title\">Map \u2014 your location &amp; targets<\/h3>\r\n                <div class=\"gps-ar-map-modal-header-actions\">\r\n                    <button type=\"button\" id=\"gps-ar-map-fullscreen-btn\" class=\"gps-ar-map-fullscreen-btn\" aria-pressed=\"false\" aria-label=\"Fullscreen map\"\r\n                        data-label-full=\"Fullscreen\"\r\n                        data-label-exit=\"Exit full\"\r\n                        data-aria-full=\"Fullscreen map\"\r\n                        data-aria-exit=\"Exit fullscreen map\">\r\n                        <span class=\"gps-ar-map-fullscreen-icon\" aria-hidden=\"true\">\u26f6<\/span>\r\n                        <span class=\"gps-ar-map-fullscreen-label\">Fullscreen<\/span>\r\n                    <\/button>\r\n                    <button type=\"button\" id=\"gps-ar-map-modal-close\" class=\"gps-ar-map-modal-close\" aria-label=\"Close\">&times;<\/button>\r\n                <\/div>\r\n            <\/div>\r\n            <p class=\"gps-ar-map-hint\">Blue = you, purple = targets, gold dashed line = direction to the nearest target. Use N\/E\/S\/W if the map feels rotated. Tap a name to zoom there.<\/p>\r\n            <div class=\"gps-ar-map-stage\">\r\n                <div class=\"gps-ar-map-map-wrap\">\r\n                    <button type=\"button\" id=\"gps-ar-map-exit-fullscreen-btn\" class=\"gps-ar-map-exit-fullscreen-btn\" aria-label=\"Exit fullscreen\">\r\n                        Exit fullscreen                    <\/button>\r\n                    <div id=\"gps-ar-map-canvas\" class=\"gps-ar-map-canvas\" role=\"presentation\"><\/div>\r\n                    <div class=\"gps-ar-map-rotation\" role=\"toolbar\" aria-label=\"Rotate map so north, east, south, or west is at the top\">\r\n                        <span class=\"gps-ar-map-rotation-label\">Top is<\/span>\r\n                        <div class=\"gps-ar-map-rotation-row\">\r\n                            <button type=\"button\" class=\"gps-ar-map-bearing-btn gps-ar-map-bearing-btn--active\" data-gps-ar-map-bearing=\"0\" title=\"North at top\">N<\/button>\r\n                            <button type=\"button\" class=\"gps-ar-map-bearing-btn\" data-gps-ar-map-bearing=\"90\" title=\"East at top\">E<\/button>\r\n                            <button type=\"button\" class=\"gps-ar-map-bearing-btn\" data-gps-ar-map-bearing=\"180\" title=\"South at top\">S<\/button>\r\n                            <button type=\"button\" class=\"gps-ar-map-bearing-btn\" data-gps-ar-map-bearing=\"270\" title=\"West at top\">W<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <aside id=\"gps-ar-map-legend\" class=\"gps-ar-map-legend\" aria-label=\"Map legend and target list\"><\/aside>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n\r\n<script>\r\n\/\/ Immediately hide 2D button on page load - runs before DOMContentLoaded\r\n(function() {\r\n    'use strict';\r\n    \/\/ Hide button immediately if it exists\r\n    function hide2DButton() {\r\n        const btn2D = document.getElementById('gps-ar-2d-viewer-btn');\r\n        if (btn2D) {\r\n            btn2D.setAttribute('data-has-mind-file', 'false');\r\n            btn2D.style.display = 'none';\r\n            btn2D.style.setProperty('display', 'none', 'important');\r\n        }\r\n    }\r\n    \r\n    \/\/ Try immediately\r\n    hide2DButton();\r\n    \r\n    \/\/ Try when DOM is ready\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', hide2DButton);\r\n    } else {\r\n        hide2DButton();\r\n    }\r\n})();\r\n<\/script>\r\n\r\n<!-- Initialize Audio System for 3D Viewer (self-hosted Three.js) -->\r\n<script type=\"importmap\">\r\n{\r\n    \"imports\": {\r\n        \"three\": \"https:\/\/adreamstudios.com\/wp-content\/plugins\/gps.app\/assets\/js\/vendor\/three\/build\/three.module.js\",\r\n        \"three\/addons\/\": \"https:\/\/adreamstudios.com\/wp-content\/plugins\/gps.app\/assets\/js\/vendor\/three\/examples\/jsm\/\"\r\n    }\r\n}\r\n<\/script>\r\n\r\n<script type=\"module\">\r\n    \/\/ Pre-load audio system so it's ready when 3D viewer opens\r\n    import * as THREE from 'three';\r\n    \r\n    const audioSystemUrl = 'https:\/\/adreamstudios.com\/wp-content\/plugins\/gps.app\/assets\/js\/ARAudioSystem.js';\r\n    console.log('[GPS AR Viewer] Pre-loading ARAudioSystem from:', audioSystemUrl);\r\n    \r\n    try {\r\n        const audioModule = await import(audioSystemUrl);\r\n        const { ARAudioSystem, setTHREE } = audioModule;\r\n        \r\n        if (setTHREE && typeof setTHREE === 'function') {\r\n            setTHREE(THREE);\r\n            console.log('[GPS AR Viewer] \u2705 THREE reference set for ARAudioSystem');\r\n        }\r\n        \r\n        \/\/ Store globally so 3D viewer can use it\r\n        window.GPS_AR_AudioSystem = ARAudioSystem;\r\n        window.GPS_AR_AudioSystemReady = true;\r\n        \r\n        console.log('[GPS AR Viewer] \u2705 ARAudioSystem pre-loaded and ready');\r\n    } catch (error) {\r\n        console.error('[GPS AR Viewer] \u274c Error pre-loading ARAudioSystem:', error);\r\n        window.GPS_AR_AudioSystemReady = false;\r\n    }\r\n<\/script>\r\n\r\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"default","_kad_post_title":"default","_kad_post_layout":"default","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"default","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-2012","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/adreamstudios.com\/index.php?rest_route=\/wp\/v2\/pages\/2012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adreamstudios.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/adreamstudios.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/adreamstudios.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adreamstudios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2012"}],"version-history":[{"count":1,"href":"https:\/\/adreamstudios.com\/index.php?rest_route=\/wp\/v2\/pages\/2012\/revisions"}],"predecessor-version":[{"id":2014,"href":"https:\/\/adreamstudios.com\/index.php?rest_route=\/wp\/v2\/pages\/2012\/revisions\/2014"}],"wp:attachment":[{"href":"https:\/\/adreamstudios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}