Una de las más importantes características en el desarrollo web, aunque ya tiene tiempo usándose, pero ahora se le ha dado más auge, es la Geolocalización, saber de dónde un usuario está visitando tu sitio. Con ello se pueden adaptar y mostrar idiomas acorde al visitante o mostrarle productos que le puedan ser de interés de acuerdo a la ubicación del usuario.
Vamos a indagar y probar el uso de la API de Geolocalización de Firefox para obtener a detalle la ubicación de un usuario, bastante sencilla de usar la API es, así que podremos probar y jugar con los datos que se obtengan. En este ejercicio usé jQuery, la API de Firefox por supuesto y una pequeña parte de GMaps. En el demo podrás ver en función este ejemplo. Funciona completamente con Firefox 3.6 o superior, cualquier otro navegador con capacidades de Geolocalización, ofrecerá solamente latitud y longitud pero funcionará.
Detectando capacidades de Geolocalización del Navegador
if(navigator.geolocation) {
// Woohoo!! Tu navegador si tiene esta capacidad
}
else {
alert('Awww =S Tu navegador no tiene esta capacidad, intenta con uno más actualizado');
}
Con el objeto navigator.geolocation es con el que detectamos si el navegador tiene las capacidades necesarias para detectar la Geolocalización.
Consultando para obtener la información
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
alert('Your lat-long is: ' + position.coords.latitude + ' / ' + position.coords.longitude);
alert('You live in ' + position.address.city + ', ' + position.address.state)
});
}
El método navigator.geolocation.getCurrentPosition es el que hace la labor de recuperación de la ubicación del usuario. Una vez que se ha llamado a este método, por medio de una función que permita su ejecución, el navegador nos preguntará si le permitimos usar la información de nuestra ubicación, lo hará de esta manera:
Cuando el usuario permita recuperar su ubicación, Firefox obtendrá la información, regresando un objeto con 2 atributos bastante usables: position.coords y position.address
position.coords nos nos da la latitud y longitud, mientras que position.address nos da el streetNumber (número de calle), street (nombre de la calle), premises (¿? no logro traducirlo correctamente pero supongo es algo como colonia), city (ciudad), county (condado), region (cstado), country (país), countryCode (código del país), y postalCode (código postal).
Por supuesto, esto funciona completamente con Firefox, sin embargo con otros navegadores que soporten geolocalización, obtendrá la Latitud y Longitud de tu ubicación que, debo aclarar tal cual lo hice en el post de ¿Qué es Geolocalización?, la ubicación por IP a través de navegadores no es muy precisa en muchas ciudades, aunque en ciudades donde si están bien mapeados, documentados y distribuídos los nodos de conexión, será más cercano a lo real.
Ya les iré comentando experiencias con más y mejores cosas respecto a la geolocalización, ahora más que la API de Geolocalización de la W3C empieza a tomar fuerza, la geolocalización parece algo del futuro, sin embargo es algo que estamos viviendo en este presente…
Enjoy this Life!!
Quizá también te interese...
2 Responses to “Geolocalización mediante la API de Firefox”












Excelente información para comenzar con esto de la Geolocalización, no pensé que fuera tan fácil, pues tenía la curiosidad de investigar pero nunca lo hice y ahora veo que es muy simple.
Aunque lo he probado con 4 diferentes proveedores de internet y el resultado es el siguiente:
Axtel: no funciona la geolocalización
Megacable: igual que axtel no funciona
Infinitum: funciona perfectamente
Telcel: También funciona perfectamente
No sé por qué razón con Megacable nunca funciona la geolocalización, ni en Twitter lo hace, en el caso de Axtel a veces me dice que estoy en Monterrey
@CarlosLeopoldo Con Megacable y Axtel funciona así: cada conexión de casa está conectada a una especie de switch o router, no tienes IP pública, tienes una privada que ofrece el nodo que te distribuye internet, por lo que he podido checar, tampoco ese nodo tiene IP pública y está conectado a un lugar muy lejano, ya sea la central local de las compañías o incluso fuera de la ciudad. =D