2013-04-22 11 views
7

C'è un modo per richiedere nuovamente all'utente la geolocalizzazione su alcuni trigger, dopo aver negato la condivisione della posizione?HTML5 GEOLocation 2nd prompt

navigator.geolocation.getCurrentPosition 

si attiva una volta, le chiamate consecutive non producono lo stesso risultato. Cant trovare la risposta dovunque/

risposta

0

Date un'occhiata a questo frammento di codice e questo SO risposta: What is the best JQuery plugin that handles HTML5 location?

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
}else{ 
    errorFunction(); 
} 

function successFunction(position) { //uses HTML5 if available 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
} 

function errorFunction(){ //uses IP if no HTML5 
    $.getJSON("http://freegeoip.net/json/", function(res){ 
     var lat = res.latitude; 
     var lng = res.longitude; 
    }); 
} 

Date un'occhiata a questo link Fiddle anche JQuery Geolocator Plugin

+0

fa questo in realtà risolve il problema in questione qui (che la richiesta per permettere di ricerca geolocalizzazione non viene di nuovo dopo che è stato negato una volta) ...? Ne dubito. – CBroe

+0

non risponde alla mia domanda però –

+0

Immagino che l'unico modo per ovviare a questo problema è di aggiornare la pagina (se è un'opzione) per poterla richiedere nuovamente. –

0

In Geolocation API? No.

Se l'utente fa clic negano il permesso significa semplicemente "No, e non mi preoccupa ancora una volta ..."

Tuttavia utente può farlo cancellando Posizione-Share-impostazioni, poi, naturalmente, il prompt si apre di nuovo.

Oppure l'utente può semplicemente modificare le impostazioni se il browser lo consente, ad es. Chrome gestisce queste impostazioni come eccezioni (indipendentemente dal fatto che l'utente abbia autorizzato o negato il permesso), quindi l'utente deve eliminare le impostazioni, risp. eccezione comunque.

Che ora?

L'unica opzione è di rilevare l'errore e utilizzare ad es. alcune API esterne per trovare la posizione dell'utente tramite IP. Puoi programmarlo da solo o ci sono naturalmente soluzioni esistenti come suggerito da @Venkat.

Ma sappiate che la geolocalizzazione IP è complicata - a volte ha un'accuratezza del numero di indirizzi a volte è solo la precisione dello stato.

Questo examle from Mozilla's docs mostra un buon esempio come gestire gli errori Geolocalizzazione:

var options = { 
    enableHighAccuracy: true, 
    timeout: 5000, 
    maximumAge: 0 
}; 

function success(pos) { 
    var crd = pos.coords; 

    console.log('Your current position is:'); 
    console.log('Latitude : ' + crd.latitude); 
    console.log('Longitude: ' + crd.longitude); 
    console.log('More or less ' + crd.accuracy + ' meters.'); 
}; 

function error(err) { 
    /* 
    CALL EXTERNAL API HERE 
    */ 
    console.warn('ERROR(' + err.code + '): ' + err.message); 
}; 

navigator.geolocation.getCurrentPosition(success, error, options); 
Problemi correlati