Prompt di posizione Geo HTML 5 in Chrome

Sto iniziando a entrare in HTML 5 e a testare la geo location … mi piace così tanto. Sto colpendo un po ‘di speed bump però … quando cerco di ottenere la mia posizione geografica, Chrome blocca automaticamente la pagina dalla mia posizione. Questo non succede in altri siti come il seguente sito:

http://html5demos.com/geo

Gli script che sto usando:

    function get_location() { if (geo_position_js.init()) { geo_position_js.getCurrentPosition(show_map, handle_error); } } function show_map(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; alert("lat:" + latitude + " long:" + longitude); } function handle_error(err) { alert(err.code); if (err.code == 1) { // user said no! } } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(show_map, handle_error); } else { error('not supported'); } 

Lo sto testando da una directory locale sulla mia macchina, quindi non c’è davvero un “dominio” come “http://whatever.com/mytestpage.html”. È per questo che non mi viene chiesto? In tal caso, è ansible forzare il browswer a richiedere l’authorization per ottenere la posizione geografica dell’utente ed è ansible nel mio scenario?

C’è una sorta di restrizione della sicurezza in atto in Chrome per l’utilizzo della geolocalizzazione da un URI file:/// , anche se sfortunatamente non sembra che sia stato registrato alcun errore per indicarlo. Funzionerà da un server web locale. Se hai Python installato prova ad aprire un prompt dei comandi nella directory in cui si trovano i tuoi file di test e ad emettere il comando:

 python -m SimpleHTTPServer 

Dovrebbe avviare un server web sulla porta 8000 (potrebbe essere qualcos’altro, ma ti dirà in console quale porta sta ascoltando), quindi vai a http: // localhost: 8000 / mytestpage.html

Se non si dispone di Python ci sono moduli equivalenti in Ruby o Visual Web Developer Express viene fornito con un web server locale incorporato.

Nessuno dei precedenti mi ha aiutato.

Dopo una piccola ricerca ho scoperto che a partire da M50 (aprile 2016) – Chrome ora richiede un’origine sicura (come HTTPS) per la geolocalizzazione .

Funzionalità deprecate su origini non sicure

L’host “localhost” è speciale b / c è “potenzialmente sicuro”. Potresti non vedere errori durante lo sviluppo se stai distribuendo sul tuo computer di sviluppo.

Come già menzionato nella risposta di robertc, Chrome blocca alcune funzionalità, come la posizione geografica con i file locali. Un’alternativa più semplice alla creazione di un proprio server Web sarebbe semplicemente l’ avvio di Chrome con il parametro --allow-file-access-from-files . Quindi puoi utilizzare la posizione geografica, a condizione che non sia stata distriggersta nelle impostazioni.

se stai ospitando dietro un server, e stai ancora affrontando problemi: prova a cambiare localhost a 127.0.0.1 ad esempio http: // localhost: 8080 / a http://127.0.0.1:8080/

Il problema che stavo affrontando era che stavo servendo un sito usando Apache Tomcat all’interno di un eclipse IDE (eclipse luna).

Per il mio controllo mentale stavo usando la demo di Remy Sharp: https://github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html

e stava ottenendo l’errore dopo aver apportato piccole modifiche alla funzione di errore nonostante avesse ospitato il codice sul server (stava solo lavorando su Firefox e fallendo su chrome e safari):

“Utente negato geolocalizzazione”

Ho apportato la seguente modifica per ottenere un messaggio di errore più dettagliato:

 function error(msg) { var s = document.querySelector('#status'); msg = msg.message ? msg.message : msg; //add this line s.innerHTML = typeof msg == 'string' ? msg : "failed"; s.className = 'fail'; // console.log(arguments); } 

errore su Internet Explorer dietro virtualbox IE10 su http://10.0.2.2:8080 :

“La posizione attuale non può essere determinata”

Per una soluzione semplice, copia il file HTML in una condivisione cloud, ad esempio Dropbox, e utilizza il link condiviso nel browser. Facile.

Il modo più semplice è cliccare sull’area a sinistra della barra degli indirizzi e cambiare le impostazioni di localizzazione lì. Permette di impostare le opzioni di posizione anche per i file:///

inserisci la descrizione dell'immagine qui

Anch’io ho avuto questo problema quando stavo provando l’API di Gelocation. Ho quindi avviato IIS Express tramite Visual Studio e quindi ho avuto accesso alla pagina e ha funzionato senza alcun problema in tutti i browser.