使用html5中的jquery改善地理位置?

时间:2019-06-29 15:30:34

标签: javascript jquery geolocation gps coordinates

我正在执行以下完整代码。.脚本每3秒钟检索一次行驶中的汽车的纬度和经度,并将数据保存到mysql表中。 即使GPS在手机上运行,​​其准确性也不是很好。 我添加了选项Var,以便我可以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 :(得分:0)

每3秒使用watchPosition而不是getCurrentPosition。后者经过了优化,可以以可能的准确性为代价快速返回。另外,您还可以检查返回值的精度(以米为单位),并确定该值太不准确并忽略它。

您可能还需要考虑其他位置过滤的详细here最小距离,最小时间等