2013-02-13 7 views
13

Chciałbym ukryć() lub pokazać() przycisk, który pozwala użytkownikom na korzystanie z ich bieżącej lokalizacji w oparciu o to, czy obecnie pozwalają one na użycie lokalizacji w ich ustawienia przeglądarki. Poniższy kod sprawdza tylko, czy przeglądarka obsługuje geolokację, a nie to, czy dany użytkownik pozwala na to.sprawdź, czy ustawienie lokalizacji zostało wyłączone w przeglądarce użytkowników

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
x.innerHTML="Geolocation is not supported by this browser.";} 
} 

Czy istnieje wartość boolowska, którą mogę wykryć dla ustawień przeglądarki, informując mnie, czy obecnie jest dozwolona lokalizacja?

dzięki za wszelkie sugestie.

Odpowiedz

18

Czytałeś http://www.w3schools.com/html/html5_geolocation.asp

Co chcesz zrobić, to sprawdzić błędy, aby zobaczyć, czy wolno go lub odmawia żądanie.

function getLocation() { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition,showError); 
    } else { 
    x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 

function showPosition(position) { 
    x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;  
} 

function showError(error) { 
    switch(error.code) { 
    case error.PERMISSION_DENIED: 
     x.innerHTML = "User denied the request for Geolocation." 
     break; 
    case error.POSITION_UNAVAILABLE: 
     x.innerHTML = "Location information is unavailable." 
     break; 
    case error.TIMEOUT: 
     x.innerHTML = "The request to get user location timed out." 
     break; 
    case error.UNKNOWN_ERROR: 
     x.innerHTML = "An unknown error occurred." 
     break; 
    } 
} 
+2

https: // developer.mozilla.org/en-US/docs/Using_geolocation –

4

Poniższy kod pozwoli Ci sprawdzić stan uprawnień bez wywoływania żądania navigator.geolocation pozwolenie na Chrome i Firefox 43+ 46+

navigator.permissions && navigator.permissions.query({name: 'geolocation'}).then(function(PermissionStatus) { 
    if(PermissionStatus.state == 'granted'){ 
      //allowed 
    }else{ 
     //denied 
    } 
}) 

Oto Reference Link

+0

a co z innymi przeglądarkami takimi jak IE/Safari/Opera? –

+0

Od tej pory nie jest obsługiwany w tych przeglądarkach. Aktualizuję odpowiedź za pomocą linku referencyjnego. –

Powiązane problemy