React Native 查询 GPS 坐标并给出超时

Posted

技术标签:

【中文标题】React Native 查询 GPS 坐标并给出超时【英文标题】:React native queries GPS coordinates and gives timeout 【发布时间】:2020-10-08 16:04:21 【问题描述】:

我们有下一个问题: 我们正在查询 gps 位置以获得仅包含半径范围内的列表的列表,但是在查询 GPS 时,它会在至少等待 40 秒后让我们超时。 在工业环境中使用小米红米 8 的 android 尤其会出现这个问题,连接比平时少或在移动中,他们无法始终访问 LTE。 我们使用库@react-native-community/geolocation 或 navigation.position 您能否帮助我们使用任何其他库或策略来获取不包含在 GPS 中始终改变其位置的 GPS 位置?就像把它放在后台一样..

代码

Geolocation.getCurrentPosition(
                    position => 
                        // process the position
                    ,
                    error => 
                        console.log(error);
                    , 
                        timeout: 40000,
                        maximumAge: 0
                    
                );

【问题讨论】:

【参考方案1】:

引用自图书馆的github 页面:

目前,在 Android 上,它使用 android.location API。 Google 不推荐使用此 API,因为它不如推荐的 Google Location Services API 准确且速度较慢。这是我们希望在不久的将来改变的东西https://github.com/react-native-community/react-native-geolocation/issues/6。

自述文件中还有一些库建议,它们实际上使用了 Google 位置服务 API。我使用了react-native-location,但是这个包不再被积极维护,所以我切换到react-native-geolocation-service,它有一个与你已经在使用的非常相似的API,更具体地说是getCurrentPosition

也许你应该试一试。

【讨论】:

【参考方案2】:

react-native-community/geolocation 不使用更准确的 Google 位置服务 API,如 readme 中所述

推荐的用于 RN Android 的 GPS 定位库(也是我使用的那个)是 react-native-geolocation-service。它的自述文件还提到了timeout issue,这让我想知道它是否和你的一样:

创建此库是为了修复位置超时 android上的问题与react-native的当前实现 地理位置 API。这个库试图通过使用谷歌来解决这个问题 Play Service 的新 FusedLocationProviderClient API,Google 强烈推荐超过 android 的默认框架位置 API。它 根据您的请求自动决定使用哪个提供商 配置,如果它还提示您更改位置模式 不满足您当前的请求配置。

所以如果我是你,我会试一试。该 API 旨在替代您使用的库,因此迁移应该只是更改包的问题。

【讨论】:

以上是关于React Native 查询 GPS 坐标并给出超时的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 react-native 从非 GPS GNSS(如 GLONASS)获取坐标

react-native 中的设备 GPS 配置

React Native:如何检查用户是否已授予gps权限

获取地理位置坐标的来源

React Native Android 位置请求超时

React Native Geolocation Watchposition不会实时更新