улучшить географическое положение с помощью jquery в html5? - PullRequest
2 голосов
/ 29 июня 2019

У меня работает следующий полный код .. скрипт каждые 3 секунды извлекает широту и долготу для движущегося автомобиля и сохраняет данные в таблицу mysql. Даже с GPS, работающим на телефоне, точность не так хороша. Я добавляю Var Options, чтобы я мог enableHighAccuracy: true.

но точность все еще очень плоха, когда я рисую карту:

enter image description here

Есть ли способ улучшить это?

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title></title>
    <script type="text/javascript" src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js?ver=3.3.1'></script>
</head>
<body style="text-align: center">
    <button style="font-size:30px" id="find_btn">Find Me</button>
    <div id="result"></div>
    <br>
    <div id="resp"></div>
    <br>

    <button style="font-size:30px" id="stop_btn">STOP</button>

    <script type="text/javascript">
    function SaveLatLng(lat,lng) {
        var url = "saveLatLng.php";
        $.ajax({                        
           type: "POST",                 
           url: url,                     
           data: {latitude:lat,longitude:lng}, 
           success: function(data) {
               $('#resp').html(data);               
           }
       });
    };

    var options = {
        enableHighAccuracy: true,
        timeout: 5000,
        maximumAge: 0
    };

    function error(err) {
        console.warn(`ERROR(${err.code}): ${err.message}`);
    }

    function randomQuote() { //user clicks button
        if ("geolocation" in navigator) { //check geolocation available 
            //try to get user current location using getCurrentPosition() method
            navigator.geolocation.getCurrentPosition(function(position){ 
                $("#result").html("Found your location <br />Lat : "+position.coords.latitude+" </br>Lang :"+ position.coords.longitude);
                SaveLatLng(position.coords.latitude,position.coords.longitude);
            }, error, options);
        } else {
            console.log("Browser doesn't support geolocation!");
        }
    };

    var interval = null;
    $("#find_btn").click(function () { 
        interval = setInterval(randomQuote, 3000);
    });    

    $("#stop_btn").click(function () { 
        clearInterval(interval);
    });
</script>
</body>
</html>

1 Ответ

0 голосов
/ 01 июля 2019

Используйте watchPosition вместо getCurrentPosition каждые 3 секунды.Последний оптимизирован для быстрого возврата с возможной потерей точности.Также вы можете проверить точность (в метрах) возвращаемого значения и решить, что оно слишком неточное, и проигнорировать его.

Возможно, вы также захотите рассмотреть подробную фильтрацию позиции здесь Мин.расстояние, минимальное время и т. д.

...