Исправить проблему Firefox действительно легко. В моем случае я сохраняю геолокацию в глобальной переменной на Javascript, которая называется геолокация. Прежде чем использовать эту переменную, я просто проверяю, не является ли она неопределенной, если да, то я просто получаю геолокацию по IP.
На моем веб-сайте у меня нет проблем с получением местоположения в первый раз, но я увидел в своем коротком примере, что никогда не хватает времени для определения географического местоположения в первый раз, потому что он слишком быстрый.
В любом случае, это только пример, вы должны адаптировать его в каждом случае.
var geolocation = {};
getLocation();
$(document).ready(function(){
printLocation(); // First time, hasn't time to get the location
});
function printLocation(){
if(typeof geolocation.lat === "undefined" || typeof geolocation.long === "undefined"){
console.log("We cannot get the geolocation (too fast? user/browser blocked it?)");
// Get location by IP or simply do nothing
}
else{
console.log("LATITUDE => "+geolocation.lat);
console.log("LONGITUDE => "+geolocation.long);
}
}
function getLocation() {
// If the user allow us to get the location from the browser
if(window.location.protocol == "https:" && navigator.geolocation)
navigator.geolocation.getCurrentPosition(function(position){
geolocation["lat"] = position.coords.latitude;
geolocation["long"] = position.coords.longitude;
printLocation(); // Second time, will be return the location correctly
});
else{
// We cannot access to the geolocation
}
}
PS: У меня недостаточно репутации, чтобы комментировать вышеприведенные ответы, поэтому мне пришлось создать новый ответ. Извините за это.