{"id":3646,"date":"2026-03-12T17:07:44","date_gmt":"2026-03-12T11:37:44","guid":{"rendered":"https:\/\/swantravels.in\/?page_id=3646"},"modified":"2026-03-12T20:24:16","modified_gmt":"2026-03-12T14:54:16","slug":"track","status":"publish","type":"page","link":"https:\/\/swantravels.in\/index.php\/track\/","title":{"rendered":"track"},"content":{"rendered":"\n<style>\n    \/* Header, Footer, Menu, Sidebar sab gayab karein *\/\n    header, footer, nav, aside, .site-header, .site-footer, #masthead, #colophon, .sidebar, .widget-area {\n        display: none !important;\n    }\n    \/* Page ko full width banayein *\/\n    body, html {\n        margin: 0 !important;\n        padding: 0 !important;\n        overflow: hidden !important;\n    }\n    #swan-fullscreen-app {\n        position: fixed !important;\n        top: 0 !important;\n        left: 0 !important;\n        width: 100vw !important;\n        height: 100vh !important;\n        z-index: 99999999 !important;\n        background-color: #f0f2f5;\n        display: flex;\n        flex-direction: column;\n        margin: 0;\n        padding: 0;\n    }\n    \/* Naya CSS: Loading Map ke liye *\/\n    #map-loading {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        background: rgba(255,255,255,0.9);\n        padding: 15px 30px;\n        border-radius: 8px;\n        font-family: Arial, sans-serif;\n        font-weight: bold;\n        color: #002D62;\n        box-shadow: 0 4px 10px rgba(0,0,0,0.2);\n        z-index: 1000; \/* Map ke upar dikhega *\/\n    }\n<\/style>\n\n<div id=\"swan-fullscreen-app\">\n    <div style=\"background-color: #002D62; color: white; padding: 12px; text-align: center; box-shadow: 0 2px 5px rgba(0,0,0,0.2); z-index: 10;\">\n        <h2 style=\"margin: 0; color: white; font-size: 18px; font-weight: bold;\">Swan Travels &#8211; Live Tracking<\/h2>\n        <p style=\"margin: 3px 0 0 0; font-size: 13px;\" id=\"vehicle-display\">Loading Secure Map&#8230;<\/p>\n    <\/div>\n    \n    <div style=\"display: flex; justify-content: space-around; background: #fff; padding: 10px 5px; border-bottom: 2px solid #ddd; z-index: 10;\">\n        <div style=\"text-align: center; font-size: 13px;\"><strong>Speed<\/strong><br><span id=\"v-speed\" style=\"color:#d9534f; font-weight:bold; font-size: 18px;\">&#8230;<\/span> km\/h<\/div>\n        <div style=\"text-align: center; font-size: 13px;\"><strong>Engine<\/strong><br><span id=\"v-ignition\" style=\"font-size: 16px;\">&#8230;<\/span><\/div>\n        <div style=\"text-align: center; font-size: 13px;\"><strong>Last Update<\/strong><br><span id=\"v-time\" style=\"color:#666; font-size: 14px;\">&#8230;<\/span><\/div>\n    <\/div>\n\n    <div style=\"position: relative; flex-grow: 1; width: 100%;\">\n        <div id=\"map-loading\">\u23f3 Finding Vehicle Location&#8230;<\/div>\n        <div id=\"map\" style=\"width: 100%; height: 100%;\"><\/div>\n    <\/div>\n<\/div>\n\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" \/>\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    const urlParams = new URLSearchParams(window.location.search);\n    const vehicleNo = urlParams.get('vehicle');\n    const expTime = urlParams.get('exp');\n    const signature = urlParams.get('sig');\n    \n    if(!vehicleNo || !expTime || !signature) {\n        document.getElementById('vehicle-display').innerText = \"\u26a0\ufe0f Kripya poora aur sahi link open karein.\";\n        document.getElementById('map-loading').style.display = 'none'; \/\/ Error aane par loading chhupa do\n        return;\n    }\n    \n    document.getElementById('vehicle-display').innerText = \"Vehicle: \" + vehicleNo.toUpperCase();\n\n    \/\/ Map ko shuru mein hide rakhte hain, jab tak pehli location na aa jaye\n    var map = L.map('map', {zoomControl: false}).setView([20.5937, 78.9629], 5); \n    L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n        attribution: '\u00a9 Swan Travels'\n    }).addTo(map);\n    var marker;\n\n    const scriptUrl = \"https:\/\/script.google.com\/macros\/s\/AKfycby8yzUSHnGzH05BHSvHyhAV_7UThlMqATKs2BrEWyllf6Ks2vVli5nHRv99FawFD1wy\/exec\";\n\n    function fetchLocation() {\n        fetch(scriptUrl + \"?vehicle=\" + encodeURIComponent(vehicleNo) + \"&exp=\" + expTime + \"&sig=\" + signature)\n        .then(response => response.json())\n        .then(data => {\n            if(data.status === \"success\") {\n                var lat = data.lat;\n                var lng = data.lng;\n                \n                if(!marker) {\n                    \/\/ Pehli baar location aayi hai!\n                    document.getElementById('map-loading').style.display = 'none'; \/\/ Loading text hatao\n                    L.control.zoom({position: 'topleft'}).addTo(map); \/\/ Zoom buttons wapas lao\n                    \n                    marker = L.marker([lat, lng]).addTo(map);\n                    map.setView([lat, lng], 16); \n                } else {\n                    marker.setLatLng([lat, lng]);\n                    map.setView([lat, lng]); \n                }\n\n                document.getElementById('v-speed').innerText = data.speed;\n                document.getElementById('v-ignition').innerText = data.ignition ? \"ON \ud83d\udfe2\" : \"OFF \ud83d\udd34\";\n                \n                var date = new Date(data.time);\n                document.getElementById('v-time').innerText = date.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});\n\n            } else {\n                if(!marker) {\n                    document.getElementById('vehicle-display').innerText = data.error;\n                    document.getElementById('map-loading').innerText = \"\u26a0\ufe0f Error: \" + data.error; \/\/ Loading ki jagah error dikhao\n                    document.getElementById('map-loading').style.color = \"red\";\n                }\n            }\n        })\n        .catch(error => {\n            console.error(\"API Error:\", error);\n            if(!marker) {\n                 document.getElementById('map-loading').innerText = \"\u26a0\ufe0f Network Error. Retrying...\";\n            }\n        });\n    }\n\n    \/\/ Page load hote hi turant pehli request bhejna\n    fetchLocation();\n    setInterval(fetchLocation, 60000); \n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Swan Travels &#8211; Live Tracking Loading Secure Map&#8230; Speed&#8230; km\/h Engine&#8230; Last Update&#8230; \u23f3 Finding Vehicle Location&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3646","page","type-page","status-publish","hentry"],"publishpress_future_action":{"enabled":false,"date":"2026-05-09 06:59:55","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/pages\/3646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/comments?post=3646"}],"version-history":[{"count":8,"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/pages\/3646\/revisions"}],"predecessor-version":[{"id":3681,"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/pages\/3646\/revisions\/3681"}],"wp:attachment":[{"href":"https:\/\/swantravels.in\/index.php\/wp-json\/wp\/v2\/media?parent=3646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}