即使使用 enableHighAccuracy,Javascript GeoLocation 也不准确
Posted
技术标签:
【中文标题】即使使用 enableHighAccuracy,Javascript GeoLocation 也不准确【英文标题】:Javascript GeoLocation is not accurate even when using enableHighAccuracy 【发布时间】:2021-02-18 08:20:41 【问题描述】:在我的网站中,我希望尽可能准确地获取访问者位置
我使用了 geolocation ,它正在工作并返回纬度和经度。 但问题是有时它们会以非常高的精度返回,有时它们不会 而且距离实际位置很远。
我已包含enableHighAccuracy: true
还需要什么?我该怎么做才能始终以高精度实现它?还是 99% 的时间?
这是输出示例
完全不准确
latitude: ****, longitude: ****, accuracy: 40852
非常准确
latitude: ****, longitude: ****, accuracy: 29
代码
function getCurrentLocation()
console.log("test");
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(function (position) //showLocation, ErrorHandler, options
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var accuracy = position.coords.accuracy;
var coords = new google.maps.LatLng(latitude, longitude);
var mapOptions =
zoom: 15,
center: coords,
mapTypeControl: true,
navigationControlOptions:
style: google.maps.NavigationControlStyle.SMALL
,
mapTypeId: google.maps.MapTypeId.ROADMAP
;
var capa = document.getElementById('lat');
capa.innerhtml = "latitude: " + latitude + ", longitude: " + longitude + ", accuracy: " + accuracy;
map = new google.maps.Map(document.getElementById("mapContainer"), mapOptions);
var marker = new google.maps.Marker(
position: coords,
map: map,
title: "ok"
);
,
function error(msg) alert('Please enable your GPS position feature.');
,
maximumAge: 10000, timeout: 5000, enableHighAccuracy: true );
else
alert("Geolocation API is not supported in your browser.");
【问题讨论】:
我猜你依赖于浏览器返回的内容。您对此无能为力 但许多网站过去常常正确、完美地获取访问者的位置。我的意思是官方和关键网站,例如 gov 这取决于设备。准确度很大程度上取决于是否可以使用 GPS 芯片、手机信号塔数据、WiFi 位置等。在最坏的情况下,将使用 IP 地址,这将使您的准确性非常低。 【参考方案1】:根据我自己为各种设备制作航海和高尔夫 GPS 应用程序的经验,我认为准确度估计非常保守。
自从我为手机制作应用程序(也使用 navigator.geolocation)三星手表(也使用 geolocation.navigator)Apple Watch 和 Fibit 以来,我做了很多测试。在高尔夫球场上,我有旗帜的坐标,在高尔夫球场上有正确的距离标记。此外,其他高尔夫球手使用激光来获得与旗帜的距离。虽然应用程序向您显示 15 米的精度,但实际上不超过 5,通常小于 5。
您可以做的测试是加载谷歌卫星地图,然后在上面显示您当前的位置。
现在 enableHighAccuracy 不保证基于卫星的位置,但也可以基于手机信号塔/wifi 网络以及取决于设备。当发现更多卫星时,精度会慢慢提高。没有建筑物的清晰天空是最好的。即使半小时后,准确性仍然提高。地平线较低的卫星很难找到,但提高了准确性
【讨论】:
以上是关于即使使用 enableHighAccuracy,Javascript GeoLocation 也不准确的主要内容,如果未能解决你的问题,请参考以下文章