【问题标题】:Ionic4 watchPosition and getCurrentPosition of Geolocation not accurate with Ionic/CapacitorIonic4 watchPosition 和 getCurrentPosition 的地理位置与 Ionic/Capacitor 不准确
【发布时间】:2023-07-15 19:26:02
【问题描述】:

我正在使用 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 就够了,但事实并非如此。

【问题讨论】:

    标签: cordova ionic-framework ionic4 ionic-native capacitor


    【解决方案1】:

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

    据我所知,现代位置 API 不会区分提供者(参见融合位置),但您可以随时查看 coords.accuracy 以了解位置的准确性。

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

    【讨论】:

    • 这很简单 :-) 谢谢
    • 你知道我做错了什么吗,我只得到高于 50 的准确度结果? @nikitah
    • 这很可能是因为 (1) 未启用 GPS,(2) 您的 Android 手机上未启用高精度,或者 (3) 您没有明确请求许可。 GPS模块是强权限,需要先向用户请求:developer.mozilla.org/en-US/docs/Web/API/…
    • 有人找到解决办法了吗?
    • @Nikitah 当我的设备没有网络/数据连接/wifi 时,我在获取地理坐标时遇到了问题。我已经尝试过(ACCESS_FINE_PERMISSION 和 ACCESS_COURSE)。你能帮我解决这个问题吗?我使用的是 Ionic 4,启用高精度也是如此。
    最近更新 更多