javascript - 在 html5 中使用 jquery 改进地理位置?

标签 javascript jquery geolocation gps coordinates

我有以下完整代码工作..脚本每 3 秒检索一次行驶中的汽车的纬度和经度,并将数据保存到 mysql 表中。 即使在手机上运行 GPS,精度也不是很好。 我添加了 Options Var,这样我就可以 enableHighAccuracy: true

但是我画 map 的时候精度还是很差:

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>

最佳答案

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

您可能还想考虑其他职位过滤详情 here最小距离、最小时间等

关于javascript - 在 html5 中使用 jquery 改进地理位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56818749/

相关文章:

javascript - 具有 'remote: true' 的表单即使使用重定向也会返回 200 响应

Android Webview - navigator.geolocation.getCurrentPosition 不工作

javascript - 地理定位方法查看用户是否在特定区域

javascript - 从 javascript 对象获取值

javascript - 滚动时触发动画

javascript - 为什么我的 crypto.createHmac() 会为相同的输入生成不同的 HMAC?

jquery - 文字过渡效果

javascript - 如何单击自动构建的 li 列表的功能

php - 使用 JCrop 一次裁剪多张图像并在 php 中进行 session

android - 限制 android GPS 跟踪,但将数据收集限制在非常特定的地理区域以及手机处于运动状态时