IP-geolocatie versus apparaatlocatie via de browser
De device-Geolocation-API van de browser (navigator.geolocation) vraagt de gebruiker om toestemming en kan een precieze, door het apparaat gemeten positie teruggeven; IP-geolocatie heeft geen toestemming nodig en werkt bij elk verzoek, maar schat de locatie alleen op basis van het netwerkadres van de verbinding. Ze lossen verschillende problemen op en zijn niet onderling verwisselbaar.
Toestemming en bron
navigator.geolocation.getCurrentPosition() (de Geolocation-API van het W3C, geïmplementeerd door elke grote browser) vereist een expliciete toestemmingsprompt per origin en, op moderne browsers, een beveiligde (HTTPS-)context. Indien toegestaan, kan deze gps, wifi-positionering, triangulatie via zendmasten of IP als terugvaloptie gebruiken, afhankelijk van wat het apparaat beschikbaar heeft. IP-geolocatie heeft geen toestemmingsprompt en geen medewerking van het apparaat nodig — een API zoals GET /v1/geo leest dit rechtstreeks uit het verbindende verzoek — maar heeft altijd alleen het netwerkadres om mee te werken.
Nauwkeurigheid
Een toegestane apparaatpositie bevat doorgaans een expliciete nauwkeurigheidsradius in meters, en kan op een telefoon met gps en vrij zicht op de hemel nauwkeurig zijn tot op enkele meters. IP-geolocatie herleidt naar een netwerkbereik, niet naar een apparaat — resultaten op landniveau zijn meestal betrouwbaar, resultaten op stadsniveau zijn een echte schatting, en noch Watch-IP noch enige andere aanbieder geeft een nauwkeurigheidscijfer op meterniveau, omdat de onderliggende data niet zo precies is. Zie nauwkeurigheid voor een uitgebreidere uitleg van de onzekerheid op stadsniveau.
Foutsituaties
Apparaatgeolocatie kan mislukken of worden geweigerd: de gebruiker kan de toestemmingsprompt weigeren, de browser kan zijn geconfigureerd om deze te blokkeren, een desktopmachine heeft mogelijk geen bruikbare locatiehardware, of het verzoek kan een time-out krijgen. Behandel PERMISSION_DENIED, POSITION_UNAVAILABLE en TIMEOUT (de eigen foutcodes van de API) als afzonderlijke, verwachte uitkomsten, geen uitzonderingen. IP-geolocatie faalt anders — een herleidbaar veld kan gewoon null zijn, of bij een opzoeking op een opgegeven IP-adres found: false — en toont de gebruiker helemaal nooit een toestemmingsprompt.
Een keuze maken
Gebruik apparaatgeolocatie wanneer je de daadwerkelijke positie van de gebruiker nodig hebt en het vragen om toestemming daarvoor kunt rechtvaardigen — een kaart, een winkelzoeker of stap-voor-stap-navigatie. Gebruik IP-geolocatie voor een standaardwaarde met weinig frictie: het vooraf invullen van een land of valuta, routering van analytics, of het voorstellen (nooit afdwingen) van een locale voordat of in plaats van om toestemming te vragen. Een veelvoorkomend patroon is om IP-geolocatie te gebruiken als standaard zonder toestemming, en apparaatgeolocatie aan te bieden als een expliciete, door de gebruiker geactiveerde upgrade voor taken die daadwerkelijk precisie vereisen.
Wat dit artikel niet beweert
Dit is een algemene vergelijking van twee verschillende browsermechanismen, geen claim dat Watch-IP de device-Geolocation-API implementeert of omhult — dat doet het niet. GET /v1/geo is uitsluitend op IP gebaseerd; als je applicatie ook apparaatgeolocatie nodig heeft, roep dan de browser-API rechtstreeks aan en behandel de twee resultaten onafhankelijk van elkaar in plaats van te proberen ze met elkaar in overeenstemming te brengen.
Bronnen
Geschreven door de redactie van Watch-IP, 6 september 2026. Getoetst aan apps/web/lib/cf.ts en apps/api/src/routes/geo.ts.