navigator.geolocation.watchPosition在ios设备上无法正常工作

navigator.geolocation.watchPosition在ios设备上无法正常工作,第1张

概述我有一个奇怪的行为,无法找到解决方案.在我的React Native应用程序中,我使用navigator.geolocation来确定当前位置.我的应用程序与Facebook的地理位置代码中的示例几乎完全相同. 在模拟器中我的应用程序运行完美,但是当我将它部署到我的iphone时,返回的位置(通过getCurrentPosition和watchPosition)不正确.例如,速度和航向为-1,精度 我有一个奇怪的行为,无法找到解决方案.在我的React Native应用程序中,我使用navigator.geolocation来确定当前位置.我的应用程序与Facebook的地理位置代码中的示例几乎完全相同.

在模拟器中我的应用程序运行完美,但是当我将它部署到我的iphone时,返回的位置(通过getCurrentposition和watchposition)不正确.例如,速度和航向为-1,精度为65.经度和纬度似乎是有效的,但不是我的实际位置(在另一个国家).
无论我是通过调试还是发布将应用程序部署到iphone,它总是会做出同样的反应.

但是,如果我以TomTom开始并将此应用程序放在后台,然后启动我的GeolocationExample应用程序,那么一切正常.

我创建的应用程序如下:

react-native init GeolocationExample

然后我用这段代码替换了index.ios.Js文件.

import React,{ Component } from 'react';import {  AppRegistry,StyleSheet,Text,VIEw} from 'react-native';export default class GeolocationExample extends React.Component {  state = {    initialposition: 'unkNown',lastposition: 'unkNown',};  watchID: ?number = null;  componentDIDMount() {    navigator.geolocation.getCurrentposition(      (position) => {        var initialposition = JsON.stringify(position);        this.setState({initialposition});      },(error) => alert(JsON.stringify(error)),{enableHighAccuracy: true,timeout: 20000,maximumAge: 1000}    );    this.watchID = navigator.geolocation.watchposition((position) => {      var lastposition = JsON.stringify(position);      this.setState({lastposition});    });  }  componentwillUnmount() {    navigator.geolocation.clearWatch(this.watchID);  }  render() {    return (      <VIEw style={styles.main}>        <Text>          <Text style={styles.Title}>Initial position: </Text>          {this.state.initialposition}        </Text>        <Text>          <Text style={styles.Title}>Current position: </Text>          {this.state.lastposition}        </Text>      </VIEw>    );  }}var styles = StyleSheet.create({  main: {    margin: 30  },Title: {    FontWeight: '500',},});AppRegistry.registerComponent('GeolocationExample',() => GeolocationExample);
解决方法 (第一个选项)添加参数{enableHighAccuracy:true,timeout:20000,maximumAge:1000,precision:10 //十米不在文档中} (第2选项)设定第28行   #define RCT_DEFAulT_LOCATION_ACCURACY kCLLocationAccuracyBest //默认为kCLLocationAccuracyHundredMeters 总结

以上是内存溢出为你收集整理的navigator.geolocation.watchPosition在ios设备上无法正常工作全部内容,希望文章能够帮你解决navigator.geolocation.watchPosition在ios设备上无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存