← Back to HTML5 APIs Chapter
API Types

📍 Geolocation API — Location Pata Karo

navigator.geolocation.getCurrentPosition()

Geolocation API user ki GPS coordinates deta hai — latitude, longitude, aur accuracy. Jaise Ola ke "Share location" button pe — map pe pin milta hai. Browser pehle permission mangta hai.

Teen methods: getCurrentPosition() ek baar location leta hai, watchPosition() continuously track karta hai (live tracking), aur clearWatch() tracking band karta hai. Callback mein Position object aata hai with coords.latitude, coords.longitude, aur coords.accuracy meters mein.

🛺
Ola Analogy: Ola pe tap karo "Share location" — GPS chalta hai, coordinates milte hain, map pe pin dikhta hai. Geolocation API exactly yahi karta hai — browser GPS se coordinates leta hai, tum map pe dikhate ho.

Code Example

HTML — Geolocation API — Location Pata Karo
<!-- Simple: ek baar location lo -->
<button onclick="getLocation()">📍 Meri Location Lo</button>
<p id="result"></p>

<script>
function getLocation() {
  // Step 1: Support check karo
  if (!("geolocation" in navigator)) {
    document.getElementById("result").textContent =
      "Browser geolocation support nahi karta.";
    return;
  }

  // Step 2: API call karo
  navigator.geolocation.getCurrentPosition(
    // Success callback
    (position) => {
      const lat = position.coords.latitude;
      const lng = position.coords.longitude;
      const acc = position.coords.accuracy;
      document.getElementById("result").innerHTML =
        `Latitude: ${lat}<br>
         Longitude: ${lng}<br>
         Accuracy: ${Math.round(acc)}m<br>
         <a href="https://maps.google.com/?q=${lat},${lng}" target="_blank">
           📍 Google Maps Mein Kholo
         </a>`;
    },
    // Error callback
    (error) => {
      const messages = {
        1: "Permission denied. Location access enable karo.",
        2: "Position unavailable. GPS signal weak hai.",
        3: "Request timeout. Dobara try karo."
      };
      document.getElementById("result").textContent =
        messages[error.code] || "Unknown error.";
    },
    // Options
    {
      enableHighAccuracy: true,
      timeout: 10000,
      maximumAge: 0
    }
  );
}
</script>

<!-- Continuous tracking (live tracking) -->
<script>
let watchId;

function startTracking() {
  watchId = navigator.geolocation.watchPosition(
    (pos) => {
      console.log(`Lat: ${pos.coords.latitude}, Lng: ${pos.coords.longitude}`);
    },
    (err) => console.error(err),
    { enableHighAccuracy: true }
  );
}

function stopTracking() {
  navigator.geolocation.clearWatch(watchId);
}
</script>
"geolocation" in navigatorBrowser support check karo PEHLE call karne se
getCurrentPosition()Ek baar location lo — Position object return karta hai
watchPosition()Continuously track karo — watch ID return karta hai
clearWatch(id)Continuous tracking band karo
coords.latitudeLatitude value (Hyderabad ke liye 17.3850)
coords.longitudeLongitude value (Hyderabad ke liye 78.4867)
coords.accuracyAccuracy meters mein — kam zyada achhi
error.code 1PERMISSION_DENIED — user ne mana kiya
error.code 2POSITION_UNAVAILABLE — GPS weak/signal kho gaya
error.code 3TIMEOUT — bahut time laga GPS lock karne mein
enableHighAccuracy: trueGPS use karo Wi-Fi/IP ki jagah (zyada accurate, zyada battery)
timeout: 1000010 second ke baad give up karo
maximumAge: 0Cached position mat use karo — hamesha fresh lo

✅ When to Use

  • Map pe user location dikhana
  • "Find near me" features — stores, restaurants
  • Weather apps — location-based weather
  • Delivery apps — auto-detect delivery address
  • Live tracking — cab, delivery, friends

❌ When NOT to Use

  • Jab exact location nahi chahiye (IP-based simpler hai, no permission)
  • HTTP websites pe (geolocation ko HTTPS chahiye)
  • Users ko bina unki marzi track karne ke liye (illegal + unethical)
💡
Geolocation SIRF HTTPS ya localhost pe kaam karta hai. Agar http:// pe develop kar rahe ho — silently fail hoga ya error dega. Hamesha localhost pe test karo ya HTTPS ke saath. Aur first call slow hoti hai (GPS cold start) — loading indicator dikhao.