在 iPhone 7 上 React Native 地理定位标题始终为 -1

Posted

技术标签:

【中文标题】在 iPhone 7 上 React Native 地理定位标题始终为 -1【英文标题】:React Native geolocation heading is always -1 on iPhone 7 【发布时间】:2018-08-19 01:26:42 【问题描述】:

我面临一个几周都无法解决的问题。

任务:我注意观察设备的位置和方向。

解决方案:我使用文档中描述的方法

this.watcher = navigator.geolocation.watchPosition((position) => 
    const latitude = position.coords.latitude;
    const longitude = position.coords.longitude;
    const heading = position.coords.heading;

    this.setState(
      latitude: latitude,
      longitude: longitude,
      heading: heading
    );
  ,
  (error) => 
     console.log(`error: $error`);
  , 
  
    enableHighAccuracy: true,
    timeout: 10000,
    maximumAge: 0
  );

Eevrything 在模拟器上运行良好。但在真正的 ios 设备上,标题始终为 -1。 我的项目使用 RN 0.54。但是,我刚刚通过react-native init 创建了具有 RN 0.56 的新项目,并且行为是相同的。

问题是在 react-native-maps 包中,用户方向以完美的方式呈现,所以我认为 React Native 可能存在一些问题

有什么帮助吗?

【问题讨论】:

【参考方案1】:

由于 React Native 地理定位是网络地理定位 (see docs) 的扩展, 它将方向(标题)作为最后两个位置之间的差异。在低速或用户停留时不工作(返回-1)。

这很奇怪,因为我希望 RN 从内置的“指南针”中获取设备航向。

弹出应用的解决方案:使用第三方库react-native-heading,即使在用户停留时也能获得设备加热。

世博会解决方案:应该没有这样的问题,因为世博会使用内置指南针而不是网络地理定位。

【讨论】:

【参考方案2】:

使用 Location.getHeadingAsync() 我能够得到一个不为 -1 的航向。

查看此链接以了解我正在使用的 expo 方法: https://docs.expo.io/versions/latest/sdk/location#expolocationgetheadingasync-215

【讨论】:

我不使用expo,我开发弹出的rn app

以上是关于在 iPhone 7 上 React Native 地理定位标题始终为 -1的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 远程调试器无法在 iPhone 上运行

React-Native打包IOS安装在iPhone上

React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?

在 React Native 的 iPhone 设置上手动禁用后如何检测 PushNotificationIOS 状态?

尝试在 iPhone 上构建 React Native 应用程序时出现“npm start”错误?

React-Native Firebase Phone Auth 冻结 iPhone