Comunidad de diseño web y desarrollo en internet

Cómo funciona la geolocalización por WiFi

La geolocalización es muy útil en aplicaciones web y móviles. Pero GPS no siempre está disponible. Gracias a un esfuerzo de empresas como Google, Apple, Microsoft y Skyhook, es posible obtener latitud y longitud muy acertada con sólo usar antenas wifi. Aquí te explicamos cómo funciona.


El demo


Entra a Geolocation de HTML5 Demos y si estás desde un laptop o un computador con antena wifi prendida dale "Aceptar" cuando el navegador te pida permiso. Verás que te ubica MUY cerca a donde estás, si no es que es exacto.

Geolocation de antenas wifi


La geolocalización funciona con HTML5 o con apps nativas móviles. La técnica es muy simple:

1. Capturar datos de routers y geolocalizarlos


Si tienes un teléfono Android o iPhone, al instalarlo te preguntó si querías "ayudar anonimamente" y al mismo tiempo hacer que la localización sea más veloz. Todos dicen que sí.


El teléfono prende la antena wifi y captura todas las redes inalambricas cercanas. NO importa que esté protegida, que sea WPA2 o que la clave tenga mil caracteres porque no usa el nombre de la red, ni los paquetes, sino la MAC Address del router. Este es un número único del router que nunca cambia, incluso si el router es formateado o la red cambia de nombre. Y siempre va en texto claro entre las ondas.

Tras capturar una lista de MAC de los routers cercanos, el teléfono prende el GPS tradicional, obtiene una latitud y longitud acertada y manda a los servers (Google Geolocation, Skyhook, Microsoft Bing Geocode, etc) esos datos. Los routers rara vez se mueven, así que la base de datos tiende a ser buena.

Los carros de fotos de Google Street View también hace lo mismo con GPS profesional y antenas wifi de alto poder.

2. Comparar routers cercanos con la DB pública


Cuando una aplicación pide geolocalizar por wifi, sea en un teléfono, tablet o laptop, la app se conecta a Google Geolocation, Skyhook o la empresa que use (los navegadores lo hacen automático), le envía al API una lista completa de las MAC Address de todos los routers que tu antena ve. El API compara esas direcciones con latitudes y longitudes, triangula y envía una latitud y longitud muy cercana a la realidad.


3. Hacer algo con la latitud y longitud


¿Quieres probarlo? Crea un archivo HTML y en etiquetas script, inserta este código:

Código :

navigator.geoLocation.getCurrentPosition(exito, fallo);
function exito(datos)
{
   alert(datos.coords.latitude + "," + datos.coords.longitude);
}
function fallo(errorsh)
{
   alert("Tarde o temprano ¬ ¬");
}

Atención: Lo tienes que probar en un server, aunque sea local, no te sirve si lo abres desde el disco.

Al probarlo, te pedirá permiso para buscarte, usará geolocalización por wifi y te mostrará en pantalla tu latitud y longitud separado por una coma. Necesitas usar un navegador de verdad, eso sí. IE9 o superior.

Luego, puedes poner esos números en Google Maps y verás que, quizás, es tu casa. Si quieres usar esos datos para mostrar el mapa en un sitio web, puedes usar Gmaps.js o el API de Google Maps nativo.

La geolocalización wifi es increíble y funciona incluso en lugares muy remotos. Pública en los comentarios de donde eres y si te funcionó. O cuentale en un tweet a @cristalab.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.