我正在使用Capacitor构建我的Ionic应用。 我当然想通过GPS在地图上显示当前位置。
以下代码可以正常工作,并且可以根据需要在地图上为我提供正确的标记,但是。
async getLocation() {
var self = this;
let location = await Geolocation.getCurrentPosition({
enableHighAccuracy: true,
timeout: 1000
});
self.marker.setLngLat([location.coords.longitude, location.coords.latitude])
const wait = Geolocation.watchPosition({enableHighAccuracy: true, timeout: 1000}, (position, err) => {
self.marker.setLngLat([position.coords.longitude, position.coords.latitude])
});
}
标记在发疯。发生在我对其进行测试的每个位置。它不是在移动厘米,而是在我所在的位置移动了几米...
我缺少什么让我获得的GPS坐标精度不高?我以为enableHighAccuracy: true
就足够了,不是吗。
答案 0 :(得分:2)
可以从不同的位置提供者返回位置信息:卫星,网络,无源。为了获得最佳结果,您应该丢弃由网络和被动提供商提供的位置。
据我所知,现代位置api不能区分提供程序(参见融合位置),但是您始终可以检查coords.accuracy
以获得位置准确性的概述。
如果通过卫星对位置进行三角测量,则精度始终是最佳的。通常低于16 (以米为单位),但肯定低于30 。您可以安全地丢弃精度更高的坐标。