У меня есть эта основная функция для определения позиции пользователя:
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showmyPosition, errorCallback);
}
else
{
alert("Geolocation is not supported by this browser.");
}
}
function showmyPosition(position)
{
document.location.href="/search?lat="+ position.coords.latitude +"&lng="+ position.coords.longitude +"";
}
function errorCallback(error) {
if (error.code === 1) {
alert("User denied geolocation");
}
}
Прекрасно работает на Firefox, Chrome и Explorer, но не работает на Safary (ни на iPhone). Зачем?
Если геолокация отключена в конфигурации, она не будет работать. Кроме того, для этого требуется безопасный протокол (HTTPS). Вы также можете посмотреть JS-lib: https://code.google.com/archive/p/geo-location-javascript/