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 ¬ ¬"); }
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.
Por GOLLUM23 el 31 de Agosto de 2012
Gracias
Por dienavarrete el 31 de Agosto de 2012
Por linuxman r4 el 31 de Agosto de 2012
Por magu28 el 31 de Agosto de 2012
Por el 31 de Agosto de 2012
Por fede el 31 de Agosto de 2012
Por svenson el 31 de Agosto de 2012
solo se puede aceptar y punto.
algun otro le ha pasado igual?
Por XKlibur el 31 de Agosto de 2012
Estupendo Freddie, gracias por esta información tan interesante.
Por jose el 01 de Septiembre de 2012
Por juandalibaba el 01 de Septiembre de 2012
Por kuky el 01 de Septiembre de 2012
Por javierdwd el 01 de Septiembre de 2012
Por tuadmin el 01 de Septiembre de 2012
Por superjd10 el 01 de Septiembre de 2012
Por dyhsoluciones el 01 de Septiembre de 2012
Por haveigag el 01 de Septiembre de 2012
var getGeoLocation = function() {
if (typeof(navigator.geolocation) != 'undefined') {
var test = navigator.geolocation.getCurrentPosition(exito, fallo);
}
}
var exito = function(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
alert(lat + " " + lng);
};
var fallo = function(errorsh){
alert("Tarde o temprano ¬ ¬");
};
Y funcionó a la perfección
Por lisettealvarez6 el 02 de Septiembre de 2012
Por Alan Cristhian el 02 de Septiembre de 2012
Por esutoraiki el 02 de Septiembre de 2012
Por Luis el 02 de Septiembre de 2012
Por leojg el 03 de Septiembre de 2012
Me ubicó en Montevideo y vivo en Salto, Uruguay(A casi 500km al norte de montevideo)
Por leojg el 03 de Septiembre de 2012
Le veo una falla a este sistema, osea, se guia por los routers cercanos al usuario, pero es imposible que se sepa la ubicación de todos los routers del mundo.
Por krlitos el 03 de Septiembre de 2012
Por gonpru el 03 de Septiembre de 2012
Por scx7 el 03 de Septiembre de 2012
Por andr3519 el 03 de Septiembre de 2012
Por superjd10 el 03 de Septiembre de 2012
andr :
Por jonasanx el 04 de Septiembre de 2012
Por jonasanx el 04 de Septiembre de 2012
[code] navigator.geolocation.getCurrentPosition(function(data){ console.log(data.coords.latitude + "," + data.coords.longitude) }, function(error){ console.log("error") }); [code]
Por rocaceres el 04 de Septiembre de 2012
Por rocaceres el 04 de Septiembre de 2012
Por evergarza el 05 de Septiembre de 2012
Por hacktotopo el 14 de Septiembre de 2012
Por bolirut el 01 de Noviembre de 2012
los rooter funcionan como satélites y podria hacer una navegación en todo el lugar?
Por Kelderth el 04 de Noviembre de 2012
Por Mauricio el 06 de Febrero de 2013
Por luisCAD el 18 de Febrero de 2013
Por danitelo el 19 de Marzo de 2013
Por josemlaguerri el 22 de Marzo de 2013
Por mailen el 05 de Abril de 2013
que hago soy de colombia monteria
Por Tux el 13 de Mayo de 2013
Por Daniel el 04 de Octubre de 2013
Por Mateo el 29 de Noviembre de 2013
Una pregunta, como se podria geolocalizar a una computadora que no tiene antena wifi y esta conectada por medio de la Red local? Saludos!
Por Ramsés el 28 de Diciembre de 2013
Por Superbrommer el 13 de Enero de 2014
Por tachenk0 el 14 de Enero de 2014
Por guillermo el 24 de Enero de 2014
Por Guillefs el 29 de Enero de 2014
Por ROKO76 el 02 de Febrero de 2014
Por Ricardo el 04 de Marzo de 2014
Por chuy el 29 de Julio de 2014
Por tg el 26 de Agosto de 2014
Por Juan Manuel Valdés a el 14 de Noviembre de 2014
Por jorge s s el 14 de Diciembre de 2014
Por Ana Rotela el 02 de Marzo de 2015
Saludos desde Paraguay
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
navigator.geoLocation.getCurrentPosition(exito, fallo);
function exito(datos)
{
alert(datos.coords.latitude + "," + datos.coords.longitude);
}
function fallo(errorsh)
{
alert("Tarde o temprano ¬ ¬");
}
</script>
</body>
</html>
Por @gadriv el 03 de Marzo de 2015
Solo quería preguntarte algo;
Si yo quisiera Geolocalizar a otros dispositivos desde un punto distinto en el que me encuentro ¿como haría las solicitudes de esa información?. Asumiendo los dispositivos de los que quiero saber la ubicación pueden ser Smartphone, Laptop, tablet u otros con antena wifi (Router).
Por rosa el 12 de Marzo de 2015
Por Imaveri el 11 de Mayo de 2015
Por el 27 de Junio de 2015
Por Luis el 03 de Septiembre de 2015
Por luis el 30 de Octubre de 2015
la aplicacion
Por Tarragona el 05 de Diciembre de 2015
Por Giovanni Gabriel el 22 de Enero de 2016
Por Charles el 23 de Marzo de 2016