javascript - Proveedor de geolocalización para Firefox que permite la entrada manual.
geolocation firefox-addon (7)
¿Hay alguna forma fácil de anular los comportamientos predeterminados de la API de geolocalización y simplemente codificar su ubicación actual?
Creo que esto sería útil para realizar pruebas y por razones de privacidad (proporcionar datos de ubicación falsos)
Pensé que había un complemento para esto, pero parece que no puedo encontrar uno. La única opción en este momento parece estar cambiando el about: config geo.wifi.url a algún servicio web alternativo, que considero demasiado complicado.
¿Algunas ideas?
Gracias
Escenario ideal
Alguien implementa un complemento donde aparece un mapa de Google y puedo elegir una nueva ubicación predeterminada.
El geo.wifi.uri no necesita ser un servicio web. También puede configurarlo en un uri local con el archivo: // ...
El archivo debe ser un archivo json con contenido como este:
{"location": {
"latitude": 48.777025000000002,
"longitude": 9.1713909999999998,
"accuracy": 10.0}}
Actualización: Para Firefox 9+, el formato ha cambiado:
{
"status": "OK",
"accuracy": 10.0,
"location": {"lat": 48.777, "lng": 9.171}
}
O puedes combinarlos para apoyar tanto:
{
"status": "OK",
"accuracy": 10.0,
"location": {
"lat": 48.777,
"lng": 9.171,
"latitude": 48.777,
"longitude": 9.171,
"accuracy": 10.0
}
}
Actualización: parece que la configuración manual de esta preferencia está bloqueada por el proveedor que asume el servicio de Google. Ver Error 716453 Actualización 2: geo.wifi.uri no geo.wifi.url
En Chrome, puede utilizar la extensión de cromo de Geolocalización manual . Te permitirá elegir gráficamente tu ubicación manual.
He conectado Google Latitude a la geolocalización de Firefox. Esto le permite actualizar manualmente su ubicación en Google Latitude con un solo clic del ratón, en lugar de buscar su latitud y longitud y escribirla en un archivo local. Mi artículo sobre el tema es Make Firefox Take Geolocation From Google Latitude .
La solución requería una pequeña cantidad de codificación del lado del servidor (proporciono el código fuente en el artículo), pero por el momento estoy ejecutando este código como un servicio gratuito en vivo que puede usar.
Saludos, MetaEd
He creado una aplicación web simple que sirve como un punto final de geolocalización al que puede apuntar geo.wifi.uri del navegador. Es compatible con la especificación de la API de Google. Para usarlo, simplemente ingrese lo siguiente, reemplazando [latitud] y [longitud] con los valores deseados:
http://geolocation-mocker.phitherek.me/geolocate/[latitude]/[longitude]
y debería funcionar. Para verificar si el servicio está activo, navegue a
http://geolocation-mocker.phitherek.me
y compruebe si la página HTML se muestra correctamente. Puede encontrar el código fuente de esta aplicación simple en
https://github.com/Phitherek/geolocation-mocker
Espero que esta herramienta sea de utilidad.
Hmmm, no puede customGeoLocation
navigator.geolocation
directamente. Tal vez pueda refactorizar el código que lo usa para usar otro objeto, por ejemplo, customGeoLocation
.
En producción, solo puede establecer customGeoLocation
en navigator.geolocation
y en las pruebas usar una implementación simulada de cualquier funcionalidad que use.
EDITAR: Resulta que puede reemplazar las funciones en el objeto navigator.geolocation
pero eso no sirve para nada si está utilizando una biblioteca simulada (como JsMock) que necesita crear un objeto simulado. Así que no podrías reemplazar navigator.geolocation
con un simulacro.
Puedes burlarte de esta manera:
var getCurrentPositionCalled = false;
navigator.geolocation.getCurrentPosition = function() {
getCurrentPositionCalled = true;
};
//Your app code here
//...
assert(getCurrentPositionCalled);
La forma más fácil es navegar hasta about:config
y luego, en el cuadro de filtro, ingrese geo.wifi.uri
, haga doble clic en la única fila de configuración que aparece e ingrese el siguiente valor después de reemplazar xxx
y yyy
con las coordenadas usted obtiene de un servicio como http://www.getlatlon.com/ :
data:application/json,{"location":{"latitude":xxx,"longitude":yyy,"accuracy":10}}
Este truco no requiere complementos o archivos locales / alojados. ¡Asegúrese de que el valor esté sin espacios y esté en una sola línea!
Geolocater es un complemento experimental que te permite editar tu geolocalización.