我正在执行以下完整代码。.脚本每3秒钟检索一次行驶中的汽车的纬度和经度,并将数据保存到mysql表中。
即使GPS在手机上运行,其准确性也不是很好。
我添加了选项Var,以便我可以enableHighAccuracy: true
。
但是当我绘制地图时精度仍然很差:
有什么方法可以改善这一点?
<!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>
答案 0 :(得分:0)
每3秒使用watchPosition而不是getCurrentPosition。后者经过了优化,可以以可能的准确性为代价快速返回。另外,您还可以检查返回值的精度(以米为单位),并确定该值太不准确并忽略它。
您可能还需要考虑其他位置过滤的详细here最小距离,最小时间等