react native navigator.geolocation.getCurrentPosition 不起作用



我正在使用真正的安卓设备(5.1版(

我能够

使用反应原生地图确定我的位置(在我的应用程序内地图上的正确蓝点位置(+我能够使用谷歌地图应用程序并转到我的位置(GPS工作(。

我正在使用一个很大的超时,将启用高精度切换为真和假,删除选项......等。都未能获得Navigator.geolocation来获取数据。

这是我的代码:

var options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0
};
function success(pos) {
  var crd = pos.coords;
  console.log('Your current position is:');
  console.log(`Latitude : ${crd.latitude}`);
  console.log(`Longitude: ${crd.longitude}`);
  console.log(`More or less ${crd.accuracy} meters.`);
};
function error(err) {
  console.warn(`ERROR(${err.code}): ${err.message}`);
};
navigator.geolocation.getCurrentPosition(success, error, options);

我得到:ERROR(3): Location request timed out

我知道

为时已晚,但它可以帮助其他人。

地理位置已从反应本机.60版本中提取。如果您需要替代解决方案

安装反应原生社区/地理位置:

npm install @react-native-community/geolocation --save
react-native link @react-native-community/geolocation

然后,要请求访问位置信息,您需要将以下行添加到应用的 Android 清单中.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

用法:

import Geolocation from '@react-native-community/geolocation';
Geolocation.getCurrentPosition(info => console.log(info));

两件事。

1(如果坐标没有缓存,这实际上不是高精度响应的高超时2( 某些设备在高精度设置方面存在问题。

尝试将 30000 毫秒作为超时并删除高精度,直到找到一个有效的设置。

编辑:我发现了我从React Native中记住的长错误:https://github.com/facebook/react-native/issues/7495

所以,试试这个:

1( 删除最大年龄属性2( 如果这不起作用,请删除第三个参数并使用本机模块中的默认值。意思是,不要发送选项对象。这应该行得通。

删除最大值解决了这里的问题!以防万一有人在2019年或之后仍然遇到此问题

要请求访问位置信息,您需要在应用的 AndroidManifest .xml 中添加以下行:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

对于 API >= 23 的 android,您需要执行额外的步骤来检查:您需要使用 PermissionsAndroid API 请求ACCESS_FINE_LOCATION权限。

PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        title: "Location Accessing Permission",
        message: "App needs access to your location"
      }
    );

只有在那次运行之后navigator.geolocation.getCurrentPosition(success, error, options);

我使用了这个,它工作正常:{启用高精度:假,超时:50000}

async watchPosition() {
    console.log('watchPosition');        
    await navigator.geolocation.getCurrentPosition(
        (position) => {
          console.log('Position -> ',position);
        },
        (error) => console.log(error)
        {enableHighAccuracy: false, timeout: 50000}
    );
}

相关内容

  • 没有找到相关文章

最新更新