首先,我不是开发人员也不是程序员,因此这里的任何帮助将不胜感激!我有一个可在Google Chrome浏览器中启动的android移动设备上使用的表格。用户离线时可以使用此表格,我想知道如何最好地获取经纬度的离线GPS坐标。我一直在做一些挖掘,下面的代码似乎有效。我将这段代码的纬度,经度和准确性结果拖到表单上的单独字段中。 我不确定如何添加时间戳,以便可以确保读数是最新的,而不是设备上缓存的内容。坐标的货币性和可靠性对我来说非常重要。
在这方面的任何帮助都是奇妙的!! 谢谢,安吉拉
<!DOCTYPE html>
<html>
<body>
<p>Get your latitude and longitude (test this to ensure it works when out of coverage)</p>
<button onclick="getLocation()">Get your coordinates</button>
<p id="demo"></p>
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
"<br>Accuracy: " + position.coords.accuracy + '<br />'
}
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude +", Accuracy " + position.coords.accuracy;
$('input[name="coords"]').val(latlon).trigger('input');
}
</script>
</body>
</html>
答案 0 :(得分:0)
getCurrentPosition
接受第二个参数PositionOptions
。您可以尝试一些选项来获得所需的结果,但是特别要使用maximumAge
和enableHighAccuracy
。要确保未缓存的结果:
navigator.geolocation.getCurrentPosition(function(pos){
console.log('Got position', pos);
}, {
// can be `0` = uncached, any number in milliseconds,
// or `Infinity` which will only retrieve cached results
maximumAge: 0,
// may take longer, but browser will do everything possible
// to get the most accurate position
enableHighAccuracy: true
});
还值得注意的是,返回的Position
带有accuracy
属性,该属性返回一个正双精度值,表示您的经纬度和以米为单位的精度。根据使用情况,您可能需要要求一定的准确性阈值,以便用户与您的应用进行交互。您可以see the full spec here。