Задать вопрос
primitiv
@primitiv
Веб программист

Как получить актуальние координаты объекта?

Приветствую, Столкнулся с проблемой, я питаюсь получить актуальные координаты долготы и широты. Создаю pwa приложение для любителей велоспорта, в поисковике нашёл метод для определения местоположения объекта (физически), но при клике по кнопке я всегда получаю одни и те-же значения координат, не могу понять что я делаю не так, внизу представляю свой код,
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
    <button id = "find-me">Определить моё местоположение</button><br/>
    <p id = "status"></p>
    <div id="schirota"></div>
    <div id="dolgota"></div>
    <div id="pogreschnost"></div>
    <div id="visota"></div>
    <div id="pogreschnost_visota"></div>

    <script>
        function geoFindMe() {

            var status = document.querySelector('#status');

            let schirota
            let dolgota 
            let pogreschnost

            function success(position) {
                var latitude  = position.coords.latitude;
                var longitude = position.coords.longitude;
                var altitude = position.coords.altitude;
                var accuracy = position.coords.accuracy;
                var altitudeAccuracy = position.coords.altitudeAccuracy;

                status.textContent = '';

                //эта функция для ограничения количества знаков после запятой (7)
                function trunc(decimal,n=2){
                    let x = decimal + '';
                    return x.lastIndexOf('.')>=0?parseFloat(x.substr(0,x.lastIndexOf('.')+(n+1))):decimal;
                }

                schirota = trunc(latitude,7)
                dolgota = trunc(longitude,7)
                pogreschnost = trunc(accuracy,1)

                document.getElementById('schirota').innerHTML = 'Широта: ' + schirota;
                document.getElementById('dolgota').innerHTML = 'Долгота: ' + dolgota;
                document.getElementById('pogreschnost').innerHTML = 'Погрешность в метрах: ' + pogreschnost;
                document.getElementById('visota').innerHTML = 'Высота в метрах над уровнем моря: ' + altitude;
                
                $.post('coord.php', {
                    crd: schirota + ',' + dolgota + ',' + pogreschnost + ',' + altitude
                }, function (data) {
                    if(data){} else {
                        alert("Что-то пошло не так!");
                    }
                });

            }

            function error() {
                status.textContent = 'Невозможно получить ваше местоположение';
            }

            if (!navigator.geolocation) {
                status.textContent = 'Geolocation не поддерживается вашим браузером';
            } else {
                status.textContent = 'Определение местоположения…';
                navigator.geolocation.getCurrentPosition(success, error, {
                    enableHighAccuracy: true
                });
            }

            //В итоге сколько раз я бы не нажал на кнопку "find-me" в БД отправяться одни и те-же координаты
            //["44.6250225,40.070373,224.5","44.6250225,40.070373,224.5"]
        }

        document.querySelector('#find-me').addEventListener('click', geoFindMe);

    </script>

</body>
</html>
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Средний 10 комментариев
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
если нет доступа к геоданным т.е. сайт открыт не в мобильном браузере, то координаты вычисляются по ip
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект