Ionic4 watchPosition 和 getCurrentPosition of Geolocation 与 Ionic/Capacitor 不准确

use*_*734 7 cordova ionic-framework ionic-native ionic4 capacitor

我正在使用 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])
    });
}
Run Code Online (Sandbox Code Playgroud)

标记像疯了一样四处走动。发生在我测试的每个位置。它移动的不是厘米,而是我所在位置周围的数米...

我错过了什么让我的 GPS 坐标不太准确?我以为enableHighAccuracy: true够了,但还不够。

Nik*_*tah 4

位置信息可以从不同的位置提供者返回:卫星、网络、无源。为了获得最佳结果,您应该放弃网络和无源提供商提供的位置。

据我所知,现代位置 api 不区分提供商(参见融合位置),但您始终可以检查coords.accuracy以获取位置准确性的概述。

如果通过卫星对位置进行三角测量,则精度始终是最好的。通常低于 16(以米为单位),但绝对低于 30。您可以安全地丢弃精度高于该值的坐标。