反应不灵本地navigator.geolocation.getCurrentPosition

问题描述 投票:7回答:4

我使用的是真正的Android设备(5.1版本)

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

我使用的是大超时,切换enableHighAccuracy真假,删除选项...等。所有未能获得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

android react-native geolocation navigator react-native-maps
4个回答
6
投票

两件事情。

1)这实际上不是高精度响应高超时如果坐标没有被高速缓存2)一些设备具有与highAccuracy设置的问题。

尝试把30000毫秒超时,删除精度高,直到找到一个设置工程。

编辑:我发现长的bug,我记得形式做出响应本机:https://github.com/facebook/react-native/issues/7495

所以,试试这个:

1)取下maximumAge属性2)如果不工作,除去所述第三参数和从本机模块使用默认值。这意味着,不发送选项对象。这应该工作。


2
投票

卸下maximumAge解决这里的问题!万一有人仍然有在2019年这个问题


1
投票

我用这个和它的作品罚款:{enableHighAccuracy:假的,超时:50000}

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

1
投票

要请求访问的位置,你需要将下面的行添加到您的应用程序的AndroidManifest.xml:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

对于API> = 23的机器人,你需要需要额外的步骤来检查:您需要申请使用ACCESS_FINE_LOCATION API的PermissionsAndroid许可。

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

只有经过运行navigator.geolocation.getCurrentPosition(success, error, options);

© www.soinside.com 2019 - 2024. All rights reserved.