Domanda

Esistono modi semplici per sovrascrivere i comportamenti predefiniti di geolocalizzazione api e solo il codice reale la tua posizione attuale?

Penso che questo sarebbe utile per i test e per motivi di privacy (fornendo dati di posizione falsi)

Ho pensato che ci fosse un componente aggiuntivo per questo, ma non riesco a trovarne uno. Al momento l'unica opzione sembra cambiare il about: config geo.wifi.url in un servizio web alternativo, che considero eccessivamente complicato.

Qualche idea?

Grazie

Scenario ideale

Qualcuno implementa un componente aggiuntivo in cui viene visualizzata una mappa di Google e posso scegliere una nuova posizione predefinita.

È stato utile?

Soluzione

Non è necessario che geo.wifi.uri sia un servizio web. Puoi anche impostarlo su un uri locale con file: // ...

Il file dovrebbe essere un file json con contenuto come questo:

{"location": {
              "latitude": 48.777025000000002, 
              "longitude": 9.1713909999999998, 
              "accuracy": 10.0}}

Aggiornamento: Per Firefox 9+, il formato è cambiato:

{
    "status": "OK",
    "accuracy": 10.0,
    "location": {"lat": 48.777, "lng": 9.171}
}

Oppure puoi combinarli per supportare entrambi:

{
    "status": "OK",
    "accuracy": 10.0,
    "location": {
        "lat": 48.777,
        "lng": 9.171,
        "latitude": 48.777,
        "longitude": 9.171,
        "accuracy": 10.0
    }
}

Aggiornamento: sembra che l'impostazione manuale di questa preferenza sia bloccata dal fornitore che assume il servizio Google. Vedi Bug 716453 Aggiornamento 2: geo.wifi.uri non geo.wifi.url

Altri suggerimenti

Il modo più semplice è accedere a about: config e quindi nella casella filtro immettere geo.wifi.uri , fare doppio clic sull'unica riga di configurazione visualizzata e inserisci il valore seguente dopo aver sostituito xxx e yyy con le coordinate ottenute da un servizio come http://www.getlatlon.com/ :

dati: application / json, {" posizione ": {" latitudine ": xxx, " longitudine ": yyy, " accuratezza ": 10}}

Questo trucco non richiede componenti aggiuntivi o file locali / ospitati. Assicurati che il valore sia senza spazi e sia su una sola riga!

Geolocater è un componente aggiuntivo sperimentale che ti consente di modificare il tuo geolocalizzazione.

In Chrome, puoi utilizzare l'estensione Geolocation manuale . Ti consentirà di scegliere graficamente la tua posizione manuale.

Hmmm, non puoi deridere navigator.geolocation - forse puoi refactificare il tuo codice che lo utilizza per usare un altro oggetto - dì customGeoLocation .

In produzione puoi semplicemente impostare customGeoLocation su navigator.geolocation e nei test utilizzare un'implementazione fittizia di qualunque funzionalità tu usi.

MODIFICA: Si scopre che è possibile sostituire le funzioni sull'oggetto navigator.geolocation ma è comunque inutile se si utilizza una libreria simulata (come JsMock) che deve essere creata un oggetto finto. Quindi non saresti in grado di sostituire navigator.geolocation con una simulazione.

Puoi deridere te stesso in questo modo:

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

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

Ho collegato Google Latitude alla geolocalizzazione di Firefox. Ciò ti consente di aggiornare manualmente la tua posizione in Google Latitude con un solo clic del mouse, anziché cercare tu stesso la tua latitudine e longitudine e digitarla in un file locale. Il mio articolo sull'argomento è Fai in modo che Firefox prenda la geolocalizzazione da Google Latitude .

La soluzione richiedeva una piccola quantità di codifica lato server (fornisco il codice sorgente nell'articolo), ma per il momento sto eseguendo questo codice come servizio live gratuito che puoi usare.

Saluti, MetaEd

Ho creato una semplice applicazione Web che funge da endpoint di geolocalizzazione a cui è possibile puntare geo.wifi.uri del browser. È compatibile con le specifiche dell'API di Google. Per usarlo, basta inserire quanto segue, sostituendo [latitudine] e [longitudine] con i valori desiderati:

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

e dovrebbe funzionare. Per verificare se il servizio è attivo, vai a

http://geolocation-mocker.phitherek.me

e controlla se la pagina HTML viene visualizzata correttamente. Puoi trovare il codice sorgente per questa semplice app su

https://github.com/Phitherek/geolocation-mocker

Spero che questo strumento si riveli utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top