Кажется, я не могу заставить navigator.getLocation () работать на Firefox 65 или Safari 10
function getLocation(user_radius) {
var geo_options = {
enableHighAccuracy: true,
maximumAge : 30000,
timeout : 27000
};
function error(err) {
console.warn('Cannot load user location. Make sure you gave permission to share location');
}
document.body.style.position = "absolute";
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
lat0 = position.coords.latitude;
long0 = position.coords.longitude;
corefunction(user_radius);
},error,geo_options);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
Хотя Firefox запрашивает доступ к местоположению, а Safari - нет, ни один из них не возвращает широту и долготу.
Журнал Firefox и Safari:
*Cannot load user location. Make sure you gave.....*
что я делаю не так?
Да, я дал разрешения, и да, в обоих случаях включены службы определения местоположения.
Код прекрасно работает в Opera, Chrome, IE и Edge ...
Любопытно, что я не могу получить свое местоположение с помощью этого браузера даже на сторонних страницах:
https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation
https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API
UPDATE # 1
Я попытался предложить Стивену добавить navigator.permission; это фрагмент, который я запустил, чтобы проверить, работает ли он в Firefox.
function handlePermission() {
navigator.permissions.query({name:'geolocation'}).then(function(result) {
if (result.state == 'granted') {
report(result.state);
geoBtn.style.display = 'none';
} else if (result.state == 'prompt') {
report(result.state);
geoBtn.style.display = 'none';
navigator.geolocation.getCurrentPosition(function (position) {
lat0 = position.coords.latitude;
long0 = position.coords.longitude;
},error,geo_options);
} else if (result.state == 'denied') {
report(result.state);
geoBtn.style.display = 'inline';
}
result.onchange = function() {
report(result.state);
}
});
}
Консоль выдает «prompt», но getCurrentPosition () не выполняется.