Acerca de la geolocalización en HTML 5

Google Maps ahora puede identificar mi ubicación con la precisión de la calle con la ayuda de Firefox.

Entiendo que esta es una nueva característica de los navegadores compatibles con HTML 5 y que la ubicación se obtiene mediante el uso de algún tipo de característica de la red WiFi conectada (espero no estar haciendo suposiciones tontas).

Lo que pretendo saber es cómo funciona todo este proceso:

  • ¿Por qué solo en HTML 5?
  • ¿Por qué / cómo Firefox me pide que comparta mi ubicación con Google Maps?
  • ¿Cuál es la precisión normal con la que se puede contar?
  • ¿Cómo puedo implementar esta característica en mis sitios web?

¡Gracias por adelantado!

¿Como funciona?

Cuando visita un sitio web con reconocimiento de ubicación en Firefox, el navegador le preguntará si desea compartir su ubicación.

Si consiente, Firefox recostack información sobre los puntos de acceso inalámbrico cercanos y la dirección IP de su computadora, y obtendrá una estimación de su ubicación enviando esta información a los Servicios de Localización de Google (el servicio de geolocalización predeterminado en Firefox). Esa estimación de ubicación luego se comparte con el sitio web solicitante. ( Fuente )

¿Qué tan precisas son las ubicaciones?

La precisión varía mucho de un lugar a otro. En algunos lugares, los proveedores del servicio de geolocalización pueden proporcionar una ubicación dentro de unos pocos metros. Sin embargo, en otras áreas podría ser mucho más que eso. Todas las ubicaciones deben considerarse estimaciones, ya que no existe garantía sobre la precisión de las ubicaciones proporcionadas. ( Fuente )

En mi caso, Firefox informa que estoy a unos 10 km de mi ubicación real.

¿Cómo uso esta función en mi sitio web?

Harías algo como esto:

if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { alert(position.coords.latitude + ", " + position.coords.longitude); // Use the latitude and location as you wish. You may set a marker // on Google Maps, for example. }); } else { alert("Geolocation services are not supported by your browser."); } 

Aquí puedes ver una demostración en línea: demostración de Geolocalización HTML 5 de Firefox (requiere un navegador que tenga en cuenta la geolocalización, como Firefox 3.1b3).

HTML5 proporciona una API

que permite que el navegador web (y luego, por lo tanto, el lado del servidor de una aplicación web) consulte la ubicación y la información relacionada, como la velocidad (si corresponde), de una manera estándar y uniforme.

El host y su navegador web proporcionan los “dispositivos” que calculan / estiman la geolocalización per se

Para que esta API sea útil, requiere que el host subyacente y el navegador web
a) permitir el intercambio de dicha información (tenga en cuenta el problema de la privacidad) y
b) estar algo equipado (ya sea localmente o por medio de la red a la que están conectados) para leer o estimar la geolocalización.

Las técnicas y dispositivos implicados en el cálculo de la ubicación real implican una combinación de los siguientes (no todos se aplican por supuesto), y es independiente del estándar HTML 5 :

  • Dispositivo GPS (muchos teléfonos ahora los tienen)
  • Información de enrutamiento a nivel de la red de telefonía celular
  • Información de enrutamiento de dirección IP / ISP
  • Información del enrutador Wifi
  • Datos fijos, ingresados ​​manualmente (para las PC que se encuentran en una ubicación fija)

Por lo tanto…
– HTML5 solo no puede encontrar la geolocalización: la actualización a un navegador web más nuevo, en sí mismo, no será suficiente para obtener funciones de geolocalización en sus aplicaciones, etc.
– Los datos de geolocalización se pueden compartir fuera de la API HTML5, lo que permite que los teléfonos listos para GPS o listos para GeoLocalización expongan los datos de geolocalización dentro de otras API.

HTML5 Geolocation API utiliza ciertas características, como el Sistema de Posicionamiento Global (GPS), la dirección de Protocolo de Internet (IP) de un dispositivo, las torres de telefonía móvil más cercanas y la entrada de un usuario en el dispositivo de los usuarios para recuperar la ubicación de los usuarios. La ubicación de los usuarios recuperada mediante la API de geolocalización es casi exacta según el tipo de fuente utilizada para recuperar la ubicación.

Hay una muy buena demo de geolocalización HTML5 aquí ( http://html5demos.com/geo ). Cada vez que un sitio web intente obtener su ubicación mediante una de las siguientes API mencionadas, el navegador me solicitará su permiso antes de invocar la API para compartir su ubicación.

La API de geolocalización proporciona los siguientes métodos:

  • getCurrentPosition (successCallback, errorCallback, options)

    Se usa para recuperar la ubicación geográfica actual de un usuario.

  • watchPosition (successCallback, errorCallback, opciones)

    La función devuelve un watchId y llama a successCallback con las coordenadas actualizadas. Continúa devolviendo la posición actualizada a medida que el usuario se mueve (como el GPS en un automóvil).

  • clearWatch (watchId)

    Detiene el método watchPosition () basado en el ID de reloj provisto.

Código de muestra:

 if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(userPositionSuccess, userPositionError); } else { alert("Your browser does not support geolocation."); } function userPositionSuccess(position) { alert("Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude); } function userPositionError() { alert("There was an error retrieving your location!"); }