2009-11-26 18 views
17

¿Hay alguna manera fácil de anular los comportamientos predeterminados del geolocation api y simplemente codificar su ubicación actual?Proveedor de geolocalización para Firefox que permite la entrada manual

creo que esto sería útil para la prueba y por razones de privacidad (que proporciona datos de localización falsa)

pensé que era un añadido para esto, pero me parece que no puede 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.

¿Alguna idea?

Gracias

escenario ideal

Alguien implementa un add-on en un mapa de Google aparece y puedo escoger una nueva ubicación predeterminada.

+0

Tal escenario ideal se ha materializado: ahora hay una extensión de cromo Geolocalización manual en la tienda web de Chrome. – ronme

Respuesta

11

El geo.wifi.uri no tiene que ser un servicio web. También puede configurarlo para un URI local con file: // ...

El archivo debe ser un archivo JSON con el contenido de la siguiente manera:

{"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 usted puede 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 Bug 716453 Actualización 2: geo.wifi.uri no geo.wifi.url

0

Hmmm, no puede burlarse navigator.geolocation directamente, quizás pueda refactorizar su código que lo usa para usar otro objeto, digamos customGeoLocation.

En producción, puede simplemente configurar customGeoLocation en navigator.geolocation y en las pruebas utilizar una implementación simulada de cualquier funcionalidad que utilice.

EDIT: resulta que usted puede reemplazar las funciones de navigator.geolocation objeto, sino que sigue siendo inútil si está utilizando una biblioteca de simulacro (como JsMock) que se necesita para crear un objeto de burla. Por lo tanto, no podría reemplazar navigator.geolocation con un simulacro.

Usted puede hacer lo mismo burlarse de esta manera:

var getCurrentPositionCalled = false; 
navigator.geolocation.getCurrentPosition = function() { 
    getCurrentPositionCalled = true; 
}; 

//Your app code here 
//... 
assert(getCurrentPositionCalled); 
5

Geolocater es un experimental complemento que le permite editar su geolocalización.

+0

No es más experimental. – PhoneixS

0

He conectado la geolocalización de Google Latitude a Firefox. Esto le permite actualizar manualmente su ubicación en Google Latitude con un solo clic del mouse, en lugar de buscar su propia latitud y longitud usted mismo y escribirla en un archivo local. Mi artículo sobre el tema es Make Firefox Take Geolocation From Google Latitude.

La solución requiere 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.

Cheers, MetaEd

13

La forma más fácil es navegar a about:config y luego en la caja del filtro de entrar en geo.wifi.uri, haga doble clic en la única fila de configuración que aparece, e introduzca el valor por debajo después de sustituir xxx y yyy con las coordenadas que se obtiene de un servicio como http://www.getlatlon.com/:

data:application/json,{"location":{"latitude":xxx,"longitude":yyy,"accuracy":10}}

Este truco no requiere ningún complemento o local/archivos alojados. ¡Asegúrate de que el valor esté sin espacios y esté en una sola línea!

+2

Como referencia, el valor predeterminado de este campo es 'geoloc: // www.google.com/loc/json' –

+0

En Firefox 10 esto parece que ya no funciona. – skolima

+0

en Firefox 10+ use this 'data: application/json, {" location ": {" lat ": xxx," lng ": yyy," accuracy ": 10}}' –

1

En Chrome, puede usar la extensión de cromo Manual Geolocation. Te permitirá elegir gráficamente tu ubicación manual.

0

He creado una aplicación web simple que sirve como punto final de geolocalización a la que puede apuntar el geo.wifi.uri del navegador. Es compatible con la especificación API de Google. Para usarlo, simplemente entrar en el siguiente, en sustitución de [latitud] y [longitud] con los valores deseados:

http://geolocation-mocker.phitherek.me/geolocate/[latitude]/[longitude] 

y debería funcionar. Para comprobar si el servicio se ha terminado, vaya a

http://geolocation-mocker.phitherek.me

y comprobar 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 va a ser útil.

Cuestiones relacionadas