HTML5 GeoLocation tiende a ser mucho más preciso que GeoLocation basado en IP.
GeoLocation basado en IP depende de las bases de datos asociadas con los ISP para averiguar dónde se encuentra. Esto no funciona bien cuando su ISP brinda servicios en un área muy grande y proporciona direcciones IP dinámicas. La dirección en una ciudad hoy podría estar a 100 millas de distancia mañana. Además, esas bases de datos generalmente no se actualizan con frecuencia. Si su ISP vende bloques de direcciones IP o los mueve a una nueva ciudad, la base de datos aún puede pensar erróneamente que está en otro lugar.
La ubicación HTML5 utiliza los servicios proporcionados por su navegador para averiguar dónde se encuentra. Si su computadora tiene GPS integrado (como en muchos dispositivos móviles y algunas computadoras portátiles), sabrá exactamente donde se encuentra. Esto lo hace mucho más útil para webapps que tienen un componente de navegación o ubicación. Para los dispositivos sin GPS, a menudo puede proporcionar una muy buena aproximación basada en señales inalámbricas conocidas cercanas y otros factores, como el rastreo de los enrutadores que su computadora utiliza al conectarse a Internet. La implementación exacta depende de la computadora, qué hardware tiene disponible y cómo el navegador elige hacer las cosas.
Por ejemplo, cuando miro un servicio de ubicación basado en IP, dice que estoy en una gran ciudad en particular en la misma área general en la que vivo, pero en realidad está a unas 50 millas de distancia. Cuando utilizo un servicio basado en la ubicación HTML5 para averiguar dónde estoy, solo está apagado en aproximadamente 20 bloques.
Si está desarrollando una aplicación web que necesita datos de ubicación, intente con utilizando HTML5 GeoLocation si es posible. Configure una alternativa, de modo que si falla la ubicación HTML5, puede usar una solución GeoIP en su lugar. De esta forma, obtendrá una precisión óptima en navegadores y dispositivos compatibles, pero aún tendrá una solución en su lugar cuando los datos HTML5 no estén disponibles.
Si utilizó el geolocation-javascript project from Google Code, podría utilizar el siguiente código:
//determine if device has geo location capabilities
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(success_callback,error_callback);
}
else{
// use an AJAX request to look up the location based on IP address
}
no se puede obtener una ubicación _accurate_ utilizando la dirección IP. Lo mejor que se puede hacer es dar la ubicación del ISP que dio la dirección IP. Una vez trabajé para una empresa de EE. UU. Que tenía direcciones IP de Inglaterra ... –
@ John Saunders: para ser justos, se trata de un error en la base de datos de ubicación de IP para mantenerse actualizado, en lugar de estar la dirección IP en la ubicación incorrecta. – Spudley
¿Por qué? La "base de datos de ubicación IP" nunca ha sido, y nunca puede ser, una base de datos de las ubicaciones de las computadoras que usan una dirección IP particular. Nunca puede ser más que una base de datos de las ubicaciones de los proveedores de servicios de Internet que dieron las direcciones IP. En el mejor de los casos, se podría mantener la ubicación donde se usaría el ISP aunque se usaría la dirección IP. Y en mi caso, el enrutamiento se realizó en Londres, ¡así que todos los paquetes para EE. UU. Pasaron por el Reino Unido! –