1<!DOCTYPE html> 2<html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 9 <title>About Us</title> 10 <meta name="description" content=""> 11 <meta name="author" content="Developix"> 12 <meta name="theme-color" content="#5498e5"> 13 <meta name="color-scheme" content="light dark"> 14 <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> 15 16 17 <link rel="canonical" href="https://onlinecompass.net/about-us"> 18 <link rel="alternate" hreflang="x-default" href="https://onlinecompass.net" /> 19 20 21 <meta property="og:locale" content="en"> 22 <meta property="og:type" content="website"> 23 <meta property="og:title" content="About Us"> 24 <meta property="og:description" content=""> 25 <meta property="og:site_name" content="Online Compass"> 26 <meta property="og:url" content="https://onlinecompass.net/about-us"> 27 <meta property="og:image:type" content="image/jpeg"> 28 29 30 <meta name="twitter:card" content="summary_large_image"> 31 <meta name="twitter:title" content="About Us"> 32 <meta name="twitter:description" content=""> 33 34 35 <link rel="apple-touch-icon" sizes="180x180" href="https://onlinecompass.net/icons/apple-touch-icon.png"> 36 <link rel="icon" type="image/png" sizes="32x32" href="https://onlinecompass.net/icons/favicon-32x32.png"> 37 <link rel="icon" type="image/png" sizes="16x16" href="https://onlinecompass.net/icons/favicon-16x16.png"> 38 <link rel="manifest" href="https://onlinecompass.net/icons/site.webmanifest"> 39 <link rel="mask-icon" href="https://onlinecompass.net/icons/safari-pinned-tab.svg" color="#5bbad5"> 40 <link rel="shortcut icon" href="https://onlinecompass.net/icons/onlinecompass-favicon.ico" type="image/x-icon"> 41 <meta name="msapplication-TileColor" content="#da532c"> 42 43 <meta name="csrf-token" content="hFCwVb4C2R7Io90PYPoHPBK7s1CNJZL9DSoRVqRD"> 44 45 46
46<script> 47 (function () { 48 // Bound to 3s: a slow/blocked /geo must fall back to OSM quickly rather 49 // than leaving the map on its loader indefinitely. 50 var ctrl = (typeof AbortController !== 'undefined') ? new AbortController() : null; 51 var timer = setTimeout(function () { if (ctrl) ctrl.abort(); }, 3000); 52 // window.COMPASS_GEO_URL is always unset in production (falls back to 53 // "/geo"). The local-only /local/esri-test harness sets it to point the 54 // shared fetch at a local force-China endpoint â NOT a production query 55 // param or header. 56 var geoUrl = window.COMPASS_GEO_URL || "/geo"; 57 window.COMPASS_GEO = fetch(geoUrl, { cache: "no-cache", signal: ctrl ? ctrl.signal : undefined }) 58 .then(function (r) { clearTimeout(timer); return r.json(); }) 59 .then(function (d) { window.COMPASS_CHINA = !!(d && d.china); return d; }) 60 .catch(function () { clearTimeout(timer); window.COMPASS_CHINA = false; return null; }); 61 })(); 62 63 var OSM_URL = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"; 64 var ESRI_URL = "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}"; 65 66 window.getBaseLayer = function (L, opts) { 67 opts = opts || {}; 68 var realLayer = null, pendingMap = null, pendingHandlers = []; 69 70 // Create the real layer once /geo resolves, register any buffered 71 // handlers, THEN addTo(map) â so 'load' is bound before tiles load. 72 function flush() { 73 if (!realLayer || !pendingMap) return; 74 while (pendingHandlers.length) { 75 var h = pendingHandlers.shift(); 76 realLayer.on(h.evt, h.fn); 77 } 78 realLayer.addTo(pendingMap); 79 } 80 81 window.COMPASS_GEO.then(function (d) { 82 var cn = !!(d && d.china); // d === null on /geo failure/timeout â OSM 83 realLayer = L.tileLayer( 84 cn ? ESRI_URL : OSM_URL, 85 Object.assign({ attribution: cn ? "Tiles © Esri" : "", maxZoom: 19 }, opts) 86 ); 87 flush(); 88 }); 89 90 // Proxy: quacks like a tile layer for the two calls the map pages make. 91 return { 92 addTo: function (map) { pendingMap = map; flush(); return this; }, 93 on: function (evt, fn) { 94 if (realLayer) realLayer.on(evt, fn); 95 else pendingHandlers.push({ evt: evt, fn: fn }); 96 return this; 97 } 98 }; 99 }; 100</script>
100 101 102 <link rel="preconnect" href="https://pagead2.googlesyndication.com" crossorigin> 103 <link rel="preconnect" href="https://c.pubguru.net" crossorigin> 104 <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin> 105 106 107 <link rel="preload" href="/fonts/icons/icomoon.woff" as="font" type="font/woff" crossorigin> 108 109 110 111 112 113
113<script type="speculationrules"> 114{ 115 "prefetch": [ 116 { 117 "where": { "href_matches": "/*" }, 118 "eagerness": "conservative" 119 } 120 ] 121} 122</script>
122 123 124 125 <style id="critical-css"> 126@font-face{font-family:"icomoon";src:url("/fonts/icons/icomoon.woff") format("woff"),url("/fonts/icons/icomoon.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap} 127[class^="icon-"],[class*=" icon-"]{font-family:"icomoon"!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} 128.icon-trash:before{content:"\e900"}.icon-edit:before{content:"\e901"}.icon-maghrib:before{content:"\e902"}.icon-asr:before{content:"\e903"}.icon-fajr:before{content:"\e904"}.icon-isha:before{content:"\e905"}.icon-midnight:before{content:"\e906"}.icon-dhuhr:before{content:"\e907"}.icon-unlock:before{content:"\e908"}.icon-world:before{content:"\e909"}.icon-lock:before{content:"\e90a"}.icon-sea_level:before{content:"\e90b"}.icon-sunset:before{content:"\e90c"}.icon-sunrise:before{content:"\e90d"}.icon-theme:before{content:"\e90e"}.icon-share-2:before{content:"\e90f"}.icon-compass:before{content:"\e910"}.icon-map:before{content:"\e911"}.icon-keyboard_arrow_down:before{content:"\e912"}.icon-clock:before{content:"\e913"}.icon-distance:before{content:"\e914"}.icon-noon:before{content:"\e915"}.icon-qibla-sunrise:before{content:"\e916"}.icon-qibla-sunset:before{content:"\e917"}.icon-city:before{content:"\e918"}.icon-gps_fixed:before{content:"\e919"}.icon-power:before{content:"\e91a"}.icon-stop-circle:before{content:"\e91b"}.icon-menu:before{content:"\e919"}.icon-close:before{content:"\e91c"} 129:root{--bg-color:#fff;--main-color:#5498e5;--text-color:#5a5a5a;--text-blue:#1f5fb4;--accent-color:#f8c74b;--info-color:#dc3545} 130*,*::before,*::after{box-sizing:border-box;padding:0;margin:0;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent} 131html{font-size:16px;scroll-behavior:smooth} 132html,body{overflow-x:hidden!important;width:100%!important;max-width:100%!important} 133body{font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:2;color:var(--text-color);min-height:100vh;background:var(--bg-color)} 134a{color:inherit!important;text-decoration:none;cursor:pointer} 135ul{list-style:none} 136label{cursor:pointer;user-select:none;font-size:.925rem} 137.skip-link{position:absolute;left:0;top:0;transform:translateY(-200%);z-index:1000;padding:8px 16px;background:#fff;color:var(--text-blue);border:2px solid var(--text-blue);border-radius:0 0 6px 0;text-decoration:none} 138.skip-link:focus,.skip-link:focus-visible{transform:translateY(0)} 139nav{width:100%;height:calc(60px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);background-color:#2c6cb0;color:#fff} 140nav .holder{display:flex!important;flex-direction:row;align-items:center;justify-content:space-between} 141nav ul{display:flex;gap:12px;height:100%;align-items:center;justify-content:center;cursor:pointer} 142nav .logo{height:60px;width:max-content;display:grid;grid-template-columns:auto auto;align-items:center;justify-content:center;gap:8px} 143nav .logo a{display:flex;align-items:center;justify-content:center} 144nav .logo i{font-size:2rem} 145.holder{margin:0 auto;max-width:1124px;width:100%;display:flex;flex-direction:column;position:relative} 146.compass{position:relative;height:auto;aspect-ratio:1/1;width:50%;border-radius:50%;box-shadow:0 0 15px rgba(0,0,0,.2);margin:6% auto} 147.compass .arrow{position:absolute;width:0;height:0;top:-20px;left:50%;transform:translateX(-50%);border-style:solid;border-width:30px 20px 0 20px;border-color:var(--accent-color) transparent transparent transparent;z-index:1} 148.compass>.compass-circle{position:absolute;width:100%;height:100%;top:50%;left:50%;transform:translate(-50%,-50%);background-position:center;background-repeat:no-repeat;background-size:contain;transition:none!important} 149/* .coordinates (deg/lat/long readout) and .manage (share/lock/theme) are 150 position:absolute in app.css. Without these rules they sit in normal flow 151 inside .holder before app.css loads, adding ~150-250px; the instant app.css 152 arrives they snap to absolute, .holder collapses, and the whole page jumps 153 up â this was the single biggest CLS source on the compass pages (lab CLS 154 0.626). Pinning them absolute from first paint removes the reflow entirely. 155 .colors is the theme dropdown (absolute, hidden until .active). Exact copy 156 of _general.scss:273-292 and 368-384 so there is no visual change. */ 157.coordinates,.manage{position:absolute;
157left:0;top:5%;gap:4px;display:flex;flex-direction:column;align-items:flex-start} 158.manage{cursor:pointer;right:0;left:unset!important} 159.manage span{font-size:1.5rem} 160.colors{position:absolute;display:none} 161.right{display:flex;align-items:center;justify-content:center;font-size:1.8rem;cursor:pointer;position:relative;gap:16px} 162.right .blog{font-size:16px} 163.language,.change-theme{display:flex;align-items:center;justify-content:center;position:relative} 164.language{margin-left:24px} 165.change-theme{margin-top:10px} 166.lang{color:#000;font-size:.9rem;position:absolute;display:none;flex-direction:column;box-shadow:0 5px 25px rgba(0,0,0,.07);background:#fff;border-radius:4px;padding:4px 16px;top:40px;z-index:100;cursor:pointer;gap:8px;height:max-content;max-height:220px;overflow-y:scroll;user-select:none} 167.lang.active{display:block} 168.icon-theme{font-size:2rem!important} 169.start-btn{display:none} 170.mobile-menu{display:none;cursor:pointer} 171.mobile-menu .icon-close{display:none} 172.mobile-menu.active .icon-close{font-size:1.2rem;display:block} 173.mobile-menu.active .icon-menu{display:none} 174.mobile-menu+.language{margin-left:14px} 175.tools-menu{position:relative;display:flex;font-size:16px;gap:2rem} 176.tools-menu .icon-keyboard_arrow_down{display:initial} 177.tools-menu>li{z-index:70000;min-height:65px;
177display:flex;align-items:center;justify-content:center;gap:.25rem} 178.tools-menu ul{display:none} 179footer{width:100%;min-height:calc(60px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background-color:#2c6cb0;color:#fff;display:flex;align-items:center;justify-content:center} 180footer .holder{justify-content:space-between;flex-direction:row;font-size:.9rem} 181footer .holder ul{gap:16px;display:flex} 182/* LCP heading block (.content.meta h1) is the largest text element on the 183 location routes (where-am-i, what-city, what-country, what-is-my-zip-code, 184 what-is-my-address, what-county, what-state) and the homepage SEO section. 185 Without these rules the h1 paints at the UA default (2em / black) then 186 reflows to 1.25rem / blue once app.css arrives â delaying LCP and shifting 187 layout. Values are an exact copy of public/css/_general.scss so there is no 188 visual change, only earlier application. */ 189.content{min-height:calc(100vh - 222px);margin:5% 0;box-shadow:0 5px 25px rgba(0,0,0,.07);border-radius:12px;padding:24px;text-align:justify;color:#3e3e3e} 190.content.meta{min-height:max-content!important;margin-bottom:0!important} 191.content.options{margin-bottom:0!important} 192.speed-page .content,.elevation-page .content{height:max-content;min-height:auto} 193.content h1{font-size:1.25rem} 194.content .blue{color:var(--text-blue)} 195/* Images inside .content cards. Without these, <picture> (inline, 0-height) 196 wraps an <img> that renders at its natural width (up to 640px) and bursts 197 outside the card before async app.css arrives â the "content box separated 198 from image" bug. Making <picture> block and constraining <img> matches 199 _general.scss:338-343 (desktop: max-width 70%) and _responsive.scss:154 200 (mobile: max-width 96%) so there is zero CLS. */ 201.content picture{display:block;text-align:center} 202.content img{display:block;margin:24px auto;max-width:70%;height:auto} 203/* GPS coordinates page <img> (640x335, loading=lazy). The width/height attrs 204 should compute aspect-ratio automatically, but the lazy-load decode can 205 cause a brief 0-height state on the <picture> wrapper. Pinning the ratio 206 explicitly from first paint eliminates the residual 0.021 CLS entry. */ 207.gps-page .content img[width="640"][height="335"]{aspect-ratio:640/335} 208@media(max-width:800px){ 209html{font-size:14px} 210.compass{width:80%;margin-top:42%} 211nav .holder{padding:0 12px} 212.manage{position:relative!important;flex-direction:row;align-items:center;justify-content:center;gap:12px;margin-bottom:32px} 213.manage>span,.manage .change-theme{background-color:#fff;box-shadow:0 5px 25px rgba(0,0,0,.07);width:16%;aspect-ratio:1/1;margin-top:unset;border-radius:8px;display:flex;align-items:center;justify-content:center} 214footer{padding:8px 0 calc(8px + env(safe-area-inset-bottom))!important} 215footer p{text-align:center} 216footer .holder{align-items:center;justify-content:center;flex-direction:column;gap:12px} 217.mobile-menu{display:block} 218.mobile-menu+.language{margin-left:8px} 219.tools-menu{display:none} 220.holder .content{min-height:max-content;margin:5% 0!important} 221.content img{max-width:96%} 222.track-page #map{aspect-ratio:16/15} 223/* .gps-page .holder.gps #map gets height:350px (overriding the aspect-ratio:16/8 224 above) on mobile once app.css arrives â reserving it here prevents ~185px of 225 shift on /gps-coordinates. Mirrors _responsive.scss:249-255. */ 226.gps-page .holder.gps #map{height:350px;aspect-ratio:auto} 227} 228/* Ad-frame skeleton: reserve exact box-model from first paint so there is 229 zero height/visibility reflow when app.css arrives. The outer .ad-frame 230 holds the reserved min-height + responsive visibility + contain rules so 231 that AdSense's inline style overrides on the inner .ad-slot (which set 232 min-height:0!important; height:auto!important when an ad fails to fill) 233 cannot collapse the layout slot. Breakpoints are an exact copy of 234 _responsive.scss:474-560. */ 235.ad-frame{display:block;width:100%;text-align:center;padding:.5rem;margin:0 auto;min-height:120px;contain:layout paint;overflow:hidden;position:relative} 236.ad-frame.ad-horizontal{min-height:120px} 237.ad-frame.ad-square{min-height:280px} 238.ad-frame.ad-all{display:block!important} 239.ad-slot{display:block;width:100%;position:relative} 240@media(max-width:767px){ 241.ad-frame.ad-horizontal{min-height:250px} 242.ad-frame.ad-mobile{display:block!important} 243.ad-frame.ad-tablet{display:none} 244.ad-frame.ad-desktop{display:none} 245} 246@media(min-width:768px) and (max-width:1023px){ 247.ad-frame.ad-mobile{display:none} 248.ad-frame.ad-tablet{display:block!important} 249.ad-frame.ad-desktop{display:none} 250} 251@media(min-width:1024px){ 252.ad-frame.ad-mobile{display:none} 253.ad-frame.ad-tablet{display:none} 254.ad-frame.ad-desktop{display:block!important}
255/* Desktop horizontal ads served via PubGuru header-bidding + 256 AdSense commonly return 970x250 billboards (the old 120px reservation 257 only fit 728x90 / 970x90 leaderboards, so any billboard creative 258 pushed content by ~130px â CLS 0.64 on .ad-desktop.ad-horizontal, 259 90.2% poor). Reserving 250px covers the largest typical creative 260 and eliminates the shift regardless of which size fills. !important is 261 required: app.css (loaded after this inline block) still sets 120px on 262 desktop and wins on equal specificity, reintroducing the overflow. */ 263.ad-frame.ad-horizontal{min-height:250px!important} 264} 265/* Static loading placeholder on the .ad-frame BACKGROUND (not a ::before 266 overlay). A background paints BEHIND the ad <ins>/iframe so it can never 267 cover the creative; the filled ad's opaque iframe covers it, and empty slots 268 show this gray box until the ad resolves. STATIC (no animation) = zero 269 paint/main-thread cost -> cannot affect INP (an animated background-position 270 version added mobile paint pressure). Cleared (background:none) the moment an 271 ad iframe appears (:has(iframe)) or the slot resolves. !important wins over 272 the committed app.css (no build step). */ 273.ad-frame::before{display:none!important} 274.ad-frame{background:#eef1f5!important} 275.ad-frame:has(iframe),.ad-frame:has(.ad-slot.is-loaded),.ad-frame:has(ins[data-ad-status="filled"]),.ad-frame:has(ins[data-ad-status="unfilled"]){background:none!important} 276/* #map container reservation. #map holds only absolutely-positioned children 277 (search box, leaflet-loader), so its intrinsic height is 0 before app.css. 278 When app.css arrives, .track-page #map gets aspect-ratio:16/8, .elevation-page 279 #map gets height:400px, and mobile .track-page #map gets aspect-ratio:16/15. 280 Reserving these values here prevents content below the map from being pushed 281 down â mirrors _general.scss:1307-1311, _general.scss:1198-1201, and 282 _responsive.scss:48-50. */ 283#map{width:100%;aspect-ratio:16/8;position:relative;background:#ddd} 284.elevation-page #map{height:400px;aspect-ratio:auto} 285/* Location-services toggle (homepage + location/map routes). #switch is 286 75x40 in _general.scss:504 and .toggle_icon has margin-bottom:50px; 287 without these the toggle paints as plain OFF/ON text then reflows. */ 288.toggle_icon{align-items:center;justify-content:center;margin-bottom:50px;flex-direction:row;gap:8px} 289.line-page .toggle_icon,.circlemap-page .toggle_icon{margin-top:2rem;padding-bottom:.5rem} 290#switch{width:75px;height:40px;contain:layout style} 291.toggle{position:relative;border:2px solid #444249;border-radius:20px;box-sizing:border-box} 292.toggle-button,.toggle-text-off,.toggle-text-on,.glow-comp{position:absolute} 293.toggle-button{top:3px;width:65px;bottom:3px;right:3px;background-color:#444249;border-radius:23px;transform:scaleX(.4308);transform-origin:left center} 294.toggle-text-on{top:0;bottom:0;left:0;right:0;line-height:36px;text-align:center;font-size:18px;color:transparent} 295.toggle-text-off{top:0;bottom:0;right:6px;line-height:36px;text-align:center;font-size:14px;font-weight:bold;color:#444249} 296.glow-comp{opacity:0;top:10px;bottom:10px;left:10px;right:10px;border-radius:6px} 297/* .gps-info card reservation. The card renders 8 <p> rows whose <span> values 298 are filled asynchronously by setInfoData() after the nominatim reverse- 299 geocode resolves. Until then the card is ~64px shorter (zip column row + 300 address wrap row), and when the fetch resolves the card grows and pushes 301 the map + ad slots below â lab CLS 0.216 on /what-is-my-zip-code. Pin the 302 populated height here so the shift never happens. Mirrors _general.scss 303 (420px) and _responsive.scss (380px on mobile). */ 304.gps-info{display:flex;flex-direction:column;gap:1rem;min-height:420px} 305@media(max-width:800px){.gps-info{min-height:380px}} 306/* .info-text (location-services hint shown above ad slots on GPS / location 307 routes). Without this rule it renders at UA default styling on first paint, 308 then gains margin-top:-2.7rem + margin-bottom:1.7rem + bold + red from async 309 app.css â the vertical delta cascades into a CLS shift on the slots below. 310 Mirrors _general.scss:841-854 so there is no visual change, only earlier 311 application. */ 312.info-text{margin-top:-2.7rem;margin-bottom:1.7rem;width:100%;text-align:center;color:var(--info-color);font-size:1rem;font-weight:bold;display:none} 313.info-text.active{display:block} 314</style> 315 316 <link rel="stylesheet" href="https://onlinecompass.net/css/app.css"> 317 318 319
320 <link rel="preconnect" href="https://consent.cookiebot.com" crossorigin> 321<link rel="preload" href="https://consent.cookiebot.com/uc.js" as="script">
322<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="23c00000-47bc-4b9f-9c79-76cf1194cb4a" data-blockingmode="auto" data-framework="TCFv2.2" type="text/javascript" async></script>
322 323 324 325<style id="cookiebot-dialog-trim"> 326 #CybotCookiebotDialogBodyButtonDetails, 327 #CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAllSelection, 328 #CybotCookiebotDialogBodyLevelButtonsContainer, 329 #CybotCookiebotDialogBodyContentDetails, 330 #CybotCookiebotDialog .CybotCookiebotDialogBodyLevelButtonWrapper { 331 display: none !important; 332 } 333 #CybotCookiebotDialogBodyButtonAccept { 334 background-color: #5498e5 !important; 335 color: #fff !important; 336 border-radius: 8px !important; 337 font-weight: 600 !important; 338 } 339 #CybotCookiebotDialogBodyButtonDecline { 340 background-color: transparent !important; 341 color: #5498e5 !important; 342 border: 1px solid #5498e5 !important; 343 border-radius: 8px !important; 344 } 345 346 347 #CybotCookiebotDialog, 348 #CybotCookiebotDialog > div, 349 #CybotCookiebotDialogBody, 350 #CybotCookiebotDialogBodyContent, 351 #CybotCookiebotDialogFooter { 352 animation: none !important; 353 transition: none !important; 354 } 355 #CybotCookiebotDialog { 356 contain: layout paint style !important; 357 } 358 #CybotCookiebotDialogBodyContentText { 359 content-visibility: auto !important; 360 contain-intrinsic-size: auto 500px !important; 361 } 362</style> 363 364 365
365<script> 366 window.dataLayer = window.dataLayer || []; 367 // Tell gtag.js / Google Ads to read consent from the IAB TCF v2 CMP 368 // (Cookiebot, registered via data-framework="TCFv2.2" in 369 // partials/cookiebot.blade.php) instead of Google falling back to its 370 // own Funding Choices consent wall. Must be set before gtag.js runs. 371 window['gtag_enable_tcf_support'] = true; 372 function gtag() { 373 dataLayer.push(arguments); 374 } 375 gtag('js', new Date()); 376 gtag('config', 'G-6VRE1PXG9R'); 377 (function () { 378 var done = false; 379 function load() { 380 if (done) return; 381 done = true; 382 var s = document.createElement('script'); 383 s.async = true; 384 s.src = 'https://www.googletagmanager.com/gtag/js?id=G-6VRE1PXG9R'; 385 document.head.appendChild(s); 386 } 387 if ('requestIdleCallback' in window) { 388 window.requestIdleCallback(load, { timeout: 3000 }); 389 } else { 390 window.setTimeout(load, 3000); 391 } 392 window.addEventListener('load', load, { once: true }); 393 })(); 394 </script>
394 395 396 397
397<script async src="https://rum.corewebvitals.io/cwv/6a5e0000b1181c212e8046dd.js"></script>
397 398 399 400 401
401<script defer src="https://onlinecompass.net/js/ads.js"></script>
401 402 403 404 <link rel="modulepreload" href="https://onlinecompass.net/build/assets/vitals-B-N5mDEY.js" />
404<script type="module" src="https://onlinecompass.net/build/assets/vitals-B-N5mDEY.js"></script>
404 </head> 405 406 <body class="ltr-direction" 407 style="direction: ltr"> 408 409 <a href="#main" class="skip-link">Skip to main content</a> 410 411 <main id="main"> 412 413 <nav> 414 <div class="holder"> 415 416 <div class="logo"> 417 <a href="https://onlinecompass.net" aria-label="Online Compass - Live and Free Compass to Find North Direction"><i class="icon-compass" aria-hidden="true"></i></a> 418 </div> 419 420 <div class="right"> 421 422
422<script> 423 window.addEventListener("DOMContentLoaded", (event) => { 424 425 document.querySelector(".mobile-menu").addEventListener("click", function() { 426 427 document.querySelector('.tools-menu').classList.toggle('active'); 428 document.querySelector('.mobile-menu').classList.toggle('active'); 429 document.querySelector("body").classList.toggle('no-scroll'); 430 431 }); 432 433 document.querySelectorAll('.tools-menu li').forEach(element => { 434 435 element.addEventListener("click", function() { 436 437 element.classList.toggle('open') 438 }) 439 }); 440 441 document.querySelectorAll('.tools-menu li i').forEach(element => { 442 443 element.addEventListener("click", function() { 444 445 element.parentElement.classList.toggle('open') 446 }) 447 }); 448 449 }) 450</script>
450 451 452<ul class="tools-menu"> 453 454 <li> 455 456 <span>Map Tools</span> <i 457 class="icon-keyboard_arrow_down"></i> 458 459 <ul> 460 461 <li> 462 463 <a href="https://onlinecompass.net/radius-map"> 464 Draw a Radius Map 465 </a> 466 467 </li> 468 469 <li> 470 <a href="https://onlinecompass.net/line-map"> 471 Draw a Line on the Map 472 </a> 473 </li> 474 475 <li> 476 <a 477 href="https://onlinecompass.net/pin-map"> 478 Create a Pin Map 479 </a> 480 </li> 481 482 <li> 483 <a href="https://onlinecompass.net/gps-coordinates"> 484 GPS Coordinates 485 </a> 486 </li> 487 488 <li> 489 <a href="https://onlinecompass.net/what-country-am-i-in"> 490 What Country Am I in? 491 </a> 492 </li> 493 494 <li> 495 <a href="https://onlinecompass.net/what-city-am-i-in"> 496 What City Am I in? 497 </a> 498 </li> 499 500 <li> 501 <a href="https://onlinecompass.net/what-county-am-i-in"> 502 What County Am I in? 503 </a> 504 </li> 505 506 <li> 507 <a href="https://onlinecompass.net/what-state-am-i-in"> 508 What State Am I in? 509 </a> 510 </li> 511 512 <li> 513 <a 514 href="https://onlinecompass.net/where-am-i"> 515 Where Am I? 516 </a> 517 </li> 518 519 <li> 520 <a href="https://onlinecompass.net/what-is-my-address"> 521 What is My Address? 522 </a> 523 </li> 524 525 <li> 526 <a href="https://onlinecompass.net/what-is-my-zip-code"> 527 What is My Zip Code? 528 </a> 529 </li> 530 531 </ul> 532 </li> 533 534 535 536 <li> 537 538 <span>Calculators</span><i 539 class="icon-keyboard_arrow_down"></i> 540 541 <ul> 542 543 <li> 544 <a href="https://onlinecompass.net/elevation"> 545 What is My Elevation? 546 </a> 547 </li> 548 549 <li> 550 <a href="https://onlinecompass.net/running-tracker"> 551 How Far Did I Run? 552 </a> 553 </li> 554 555 <li> 556 <a href="https://onlinecompass.net/walking-tracker"> 557 Walking Tracker 558 </a> 559 </li> 560 561 <li> 562 <a href="https://onlinecompass.net/cycling-tracker"> 563 Cycling Tracker 564 </a> 565 </li> 566 567 568 <li> 569 <a href="https://onlinecompass.net/driving-tracker"> 570 How Far Did I Drive? 571 </a> 572 </li> 573 574 <li> 575 <a 576 href="https://onlinecompass.net/speedometer"> 577 Online Speedometer 578 </a> 579 </li> 580 581 <li> 582 <a 583 href="https://onlinecompass.net/ruler"> 584 Online Ruler 585 </a> 586 </li> 587 588 <li> 589 <a 590 href="https://onlinecompass.net/distance-calculator"> 591 Distance Calculator 592 </a> 593 </li> 594 595 </ul> 596 597 </li> 598 599 <li class="not"> 600 <a 601 href="https://onlinecompass.net/qibla-finder"> 602 Qibla Finder 603 </a> 604 </li> 605 606 <li class="not"> 607 <a href="https://onlinecompass.net/blog"> 608 Blog 609 </a> 610 </li> 611 612</ul> 613 614 615<div class="mobile-menu"> 616 617 <i class="icon-menu"></i> 618 <i class="icon-close"></i> 619 620</div> 621 622 </div> 623 624 </div> 625 626 </nav> 627 628 629 <div class="holder"> 630 <div class="content active"> 631 <h1 class="blue">About Us</h1> 632 <p>Onlinecompass.net is a website dedicated to providing accurate and innovative online navigational tools. Our 633 mission is to facilitate navigation and exploration by offering user-friendly and reliable resources. We strive 634 to make navigation simple, easy, and accessible to everyone, regardless of their background, location, or
635 device.</p> 636 <h3>Our Objective</h3> 637 <p>Our primary objective is to simplify navigation and make it accessible to everyone. We aim to achieve this by: 638 </p> 639 <ul> 640 <li>Providing accurate and reliable navigational tools</li> 641 <li>Offering user-friendly interfaces that are easy to understand and use</li> 642 <li>Ensuring our tools are accessible on a variety of devices and platforms</li> 643 <li>Continuously updating and improving our tools to meet the evolving needs of our users</li> 644 </ul> 645 <h3><br />Our tools include:</h3> 646 <ul> 647 <li><a href="https://onlinecompass.net/">Online Compass</a>: A digital compass that indicates direction and 648 orientation, helping you navigate with ease</li> 649 <li><a href="https://onlinecompass.net/qibla-finder">Qibla Finder</a>: A tool that assists Muslims in 650 determining the direction of the Kaaba in Mecca, making it easier to perform daily prayers</li> 651 <p><strong>Map Tools:</strong></p> 652 <li><a href="https://onlinecompass.net/radius-map"><strong>Radius Map Tool</strong></a>: Draw circles with a 653 specified radius on a map in miles or kilometers, helping you find the area around a point or your 654 current location.</li> 655 <li><a href="https://onlinecompass.net/line-map"><strong>Draw a Line on the Map Between Two 656 Points</strong></a>: Draw a straight line on the map online to calculate the distance between 657 two points easily.</li> 658 <li><a href="https://onlinecompass.net/pin-map"><strong>Create Pins on a Map Online</strong></a>: Pin 659 multiple locations on a map for free, allowing you to mark cities and countries and share your map pins 660 on social media.</li> 661 <li><a href="https://onlinecompass.net/gps-coordinates"><strong>GPS Coordinates</strong></a>: Find the 662 latitude and longitude of your location quickly, or search for geographic coordinates for any address. 663 </li> 664 <li><a href="https://onlinecompass.net/what-country-am-i-in"><strong>What Country Am I in?</strong></a>: 665 Discover your current country location instantly with accurate results.</li> 666 <li><a href="https://onlinecompass.net/what-city-am-i-in"><strong>What City Am I in?</strong></a>: Find out 667 your current city instantly and see nearby locations on the map.</li> 668 <li><a href="https://onlinecompass.net/what-county-am-i-in"><strong>What County Am I in?</strong></a>: 669 Determine the county of your current address quickly and easily.</li> 670 <li><a href="https://onlinecompass.net/what-state-am-i-in"><strong>What State Am I in?</strong></a>: Find 671 out which state you are in based on your zip code instantly.</li> 672 <li><a href="https://onlinecompass.net/where-am-i"><strong>Where Am I?</strong></a>: See your exact location 673 on the map and discover where you are at this moment.</li> 674 <li><a href="https://onlinecompass.net/what-is-my-address"><strong>What is My Address?</strong></a>: Get 675 details about your current address, including street and home information.</li> 676 <li><a href="https://onlinecompass.net/what-is-my-zip-code"><strong>What is My Zip Code?</strong></a>: Find 677 the zip code of your current location accurately and instantly.</li> 678 679 <p><strong>Calculators:</strong></p> 680 681 <li><a href="https://onlinecompass.net/elevation"><strong>What is My Elevation?</strong></a>: Determine the 682 elevation and altitude of your location above sea level in feet and meters.</li> 683 <li><a href="https://onlinecompass.net/running-tracker"><strong>How Far Did I Run?</strong></a>: Track your 684 running distance, time, and average speed with our online running tracker.</li> 685 <li><a href="https://onlinecompass.net/walking-tracker"><strong>Online Walking Tracker</strong></a>: Measure 686 your walking distance today using your phone and get accurate results instantly.</li> 687 <li><a href="https://onlinecompass.net/cycling-tracker"><strong>Online Cycling Tracker</strong></a>: Track 688 your cycling distance and speed with our free online tool.</li> 689 <li><a href="https://onlinecompass.net/driving-tracker"><strong>How Far Did I Drive?</strong></a>: Monitor 690 your driving route, distance, and more with our online tracking tool.</li> 691 <li><a href="https://onlinecompass.net/speedometer"><strong>Online Speedometer</strong></a>: Test your speed 692 live with our digital speedometer for cars, trains, and bikes, and get real-time results.</li> 693 <li><a href="https://onlinecompass.net/distance-calculator"><strong>Distance Calculator</strong></a>: 694 Measure the distance between two locations on the map in kilometers or miles with a free and accurate 695 tool.</li> 696 <li><a href="https://onlinecompass.net/ruler"><strong>Online Ruler</strong></a>: Accurately measure in 697 inches, cm, or mm using a real-size ruler that works on any device, vertically or horizontally.</li> 698 699 </ul> 700 <h3><br />Our Commitment</h3> 701 <p>We are committed to staying at the forefront of navigational technology, incorporating cutting-edge features and 702 user-friendly design to make navigation easier and more accessible. Our goal is to become the primary platform 703 for all navigation needs, providing a seamless and intuitive experience for our users. We are dedicated to:</p> 704 <ul> 705 <li>Continuously researching and developing new navigational tools and features</li> 706 <li>Ensuring our tools are accurate, reliable, and user-friendly</li> 707 <li>Providing excellent customer support and feedback mechanisms</li> 708 <li>Expanding our tools and features to meet the diverse needs of our users</li> 709 </ul> 710 <p><br />By using Onlinecompass.net, you can trust that you are getting the most accurate and innovative 711 navigational tools available. Join us today and start navigating with ease!</p> 712 713</div> 714 </div> 715 716 </main> 717 718 <footer aria-label="Site footer"> 719 <div class="holder"> 720 <p>The full rights to Copyright © 2023 are reserved by onlinecompass.net</p> 721 <nav aria-label="Footer navigation"> 722 <ul> 723 <li><a href="https://onlinecompass.net/privacy-policy">Privacy Policy</a></li> 724 <li><a href="https://onlinecompass.net/terms-service">Terms of Service</a></li> 725 <li><a href="https://onlinecompass.net/about-us">About Us</a></li> 726 </ul> 727 </nav> 728 </div> 729 </footer> 730 731 732
732<script> 733 if ('serviceWorker' in navigator) { 734 window.addEventListener('load', function () { 735 navigator.serviceWorker.register('/sw.js', { scope: '/' }).catch(function () {}); 736 }); 737 } 738 </script>
738 739 740
740<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"f8d0414d717a4bbf892a330646190281","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 740
740
741<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a441cc624ca6a577',t:'MTc5MDkyNDA5Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
741</body> 742 743</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.