2013-04-22 23 views
7

Czy istnieje sposób, aby ponownie poprosić użytkownika o geolokację w przypadku niektórych wyzwalaczy, po tym, jak odmówili udostępnienia lokalizacji?HTML2 GEOLokalizacja 2-gi podpowiedź

navigator.geolocation.getCurrentPosition 

strzela raz, kolejne połączenia nie dają tego samego wyniku. Nie mogę nigdzie znaleźć odpowiedzi/

Odpowiedz

0

spojrzeć na ten fragment kodu i to SO odpowiedź: 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; 
    }); 
} 

przyjrzeć się tej Fiddle również link JQuery Geolocator Plugin

+0

Czy to rzeczywiście rozwiązać problem w kwestii tutaj (że żeby pozwolić geolokalizacja wyszukiwanie nie pojawia się ponownie po jej odmówiono raz) ...? Wątpię. – CBroe

+0

nie odpowiada na moje pytanie przez: –

+0

Myślę, że jedynym sposobem obejścia tego jest odświeżenie strony (jeśli jest to opcja), aby móc ponownie poprosić. –

0

W geolokalizacji API? Nie

Jeśli użytkownik kliknie odmówić zgody oznacza to po prostu „Nie, i nie przeszkadza mi to jeszcze raz ...”

użytkownik może jednak to zrobić, usuwając lokalizacyjnych akcji ustawienia, a następnie oczywiście szybka wyskakuje ponownie.

Lub użytkownik może po prostu zmienić ustawienia, jeśli pozwala na to przeglądarka, np. Chrome zarządza tymi ustawieniami jako wyjątkami (bez względu na to, czy użytkownik ma zezwolenie lub nie ma uprawnień), więc użytkownik musi usunąć ustawienia, lub nie. wyjątek.

Co teraz?

Jedyną opcją jest złapanie błędu i użycie np. niektóre zewnętrzne interfejsy API, aby znaleźć lokalizację użytkownika według adresu IP. Możesz go zaprogramować samodzielnie lub oczywiście istnieją rozwiązania, które zasugerował @Venkat.

Należy jednak pamiętać, że geolokalizacja adresu IP jest trudna - czasami ma ona dokładność z dokładnością do numeru, czasem jest to tylko stan dokładności.

Ten examle from Mozilla's docs pokazuje dobry przykład sposobu obsługi błędów Geolokalizacja:

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);