【问题标题】:React Native Geolocation GetCurrentPosition EnableHighAccuracyReact Native Geolocation GetCurrentPosition EnableHighAccuracy
【发布时间】:2019-09-12 19:30:41
【问题描述】:

我在 Android 上使用 Geolocation 来获取用户的位置。我对 EnableHighAccuracy 设置有点困惑。基本上,要完成这项工作,我必须将其设置为 Android 模拟器的“真”和物理设备的“假”。否则它坏了,我得到超时错误并且没有位置。

有人可以澄清为什么会这样吗?奇怪的是,这个设置在不应该的时候完全破坏了它。我不知道这是否与设备设置或其他有关。这对于生产来说似乎有点危险,因为这太hacky了。谢谢。

navigator.geolocation.getCurrentPosition(
 async (locationObj) => {
   //Some code
 },
 (error => Alert.alert("Could not get location"),
 { enableHighAccuracy: true, timeout: 15000 }
)

【问题讨论】:

    标签: javascript android react-native geolocation


    【解决方案1】:

    如果您将“enableHighAccuracy”设置为 true,那么它将使用 GPS 并且位置将是准确的。

    这是Geolocation 中的一个错误。在 Android 上它会超时。如果您想要准确的位置并且想要启用HighAccuracy,那么您应该使用react-native-geolocation-service

    library中所述

    “创建此库是为了尝试使用 react-native 的 Geolocation API 的当前实现来修复 android 上的位置超时问题。”

    React Native 的官方site 也推荐

    “在 Android 上,它使用 android.location API。Google 不推荐使用此 API,因为它比推荐的 Google Location Services API 更不准确且速度较慢。为了将其与 React Native 一起使用,请使用react-native-geolocation-service 模块。”

    试试这个

    ...
    import Geolocation from 'react-native-geolocation-service';
    ...
    
    componentDidMount() {
        // Instead of navigator.geolocation, just use Geolocation.
        if (hasLocationPermission) {
            Geolocation.getCurrentPosition(
                (position) => {
                    console.log(position);
                },
                (error) => {
                    // See error code charts below.
                    console.log(error.code, error.message);
                },
                { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 }
            );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多