Una de las nuevas mejoras de HTML5 a parte del vídeo, canvas, animaciones, y otras, está la geolocalizacion de un usuario.
La localización de un usuario, puede ser útil en aplicaciones de escritorio, pero sobre todo cada día es mas útil y necesario en aplicaciones web. Principalmente porque cada vez las aplicaciones web son mas usadas desde dispositivos móviles.
Conocer la localización de un usuario no es algo nuevo. Hay servicios tan conocidos como http://www.maxmind.com/ que ofrecen una base de datos con ip conocidas con su localización. Pero estos servicios se basan en la detección y localización de la dirección ip. Esto a veces no suele ser muy eficaz y funcional porque requiere mantener constantemente la actualización de la base de datos de ip y no siempre muestra donde estas exactamente. Por lo que tenia que aparecer una forma de geolocalizar un usuario de la mejor y mas precisa forma posible. Ya que un objetivo fundamental en las aplicaciones web y sobre todo móviles es mostrar contenidos y resultados relevantes y cercanos al usuario que sean de su interés.
Esto es algo que personalmente conozco perfectamente. Por ejemplo algo que yo he tenido que desarrollar es un sistema de geoposicionamiento del usuario y dependiendo de donde este mostrar una campaña publicitaria diferente. De manera que para España muestre una publicidad, y dentro de España segmentar la publicidad por diferentes provincias. Para Estados Unidos, México, Brasil y Portugal tenía que mostrar publicidades especificas para cada país. Con los sistemas actuales, como he comentado, se necesita tener una base de datos de ip localizadas previamente, o poder disponer de una API para acceder a un servicio similar enviándole la ip y devolviendo la ubicación.
Que aporta la API de Geolocalizacion de HTML5
W3C ha elaborado unas especificaciones para a la API de Geolocalizacion. Básicamente quien recoge la información de localización no es un servicio web o una base de datos como las aplicaciones existentes, sino que es el propio navegador quien detecta la latitud y longitud.
La idea es obtener la información de localización de los diferentes dispositivos como una wifi o GPS. Como ya sabemos en todos los smartphones y teléfonos modernos ya vienen con GPS y todos los portátiles con wifi. Por lo que tampoco es tan difícil obtener la informacion de localizacion a partir de estos dispositivos. Pero para hacer uso de ello, la información de ubicación debe ser accesible a los sitios web a través del navegador.
Para permitir esto, la especificación W3C de geolocalización define una API para acceder a secuencias de comandos de información de localización asociada con el dispositivo de alojamiento, tales como móviles o portátiles.
La API de geolocalización proporciona la interfaz de geolocalización con una funcion getCurrentPosition que devolverá la información de longitud y latitud a la función que la invocó.
La llamada básica sería algo como esto:
[code]
void getCurrentPosition(in PositionCallback successCallback);
[/code]
Cuando esta función es invocada, la información de localización será recibida del proveedor de localización y después se pasa a la funcion callback y es entonces cuando la web puede hacer uso de los datos obtenidos.
Navegadores que soportan la API de Geolocalizacion
Actualmente esta soportado por los siguientes navegador y versiones. Puede que no estén todos, pero si los principales.
- Mozilla Firefox. Incorporado en la versión 3.5 en adelante
- Chrome. Soportado a través de Google Gears Geolocation API
- Opera. Recientemente implementada.
- Safari. Pronto lo incluirán en navegador Safari para iPhone.
- Internet Explorer. Hay una versión experimental en IE8.
Pues probar una implementación que he realizado de la localización con la API de Geolocalizacion HTML5: Cual es mi ip
Fuente: Geolocation API Specification
Me parece estupendo el artículo… sobre todo por que cuando uno empieza a analizar un tema se da cuenta de que todos se copian unos a otros y que alguen aporte su experiencia propia y sus conocimientos se agradece mucho
Gracias
Ante todo un saludo.
He leido tu comentario sobre geolocalizacion, he probado el ejemplo y la pregunta es porque funciona en pc y en movil (android) ese ejemplo no funciona?.
Hay alguna manera, mediante una pagina web, poder ver en dispositivos moviles la geolocalizacion?.
Muchas gracias
Pozi. Gracias por compartir tus conocimientos.