2017-06-02 67 views
2

我有一个奇怪的行为,无法找到解决方案。在我的React Native应用程序中,我使用navigator.geolocation来确定当前位置。我的应用程序与Facebook的地理定位代码中的示例几乎完全相同。navigator.geolocation.watchPosition在ios设备上无法正常工作

在模拟器中我的应用程序工作完美,但是当我将它部署到我的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); 
+0

@Tim感谢您的更正 – mawi

回答

0

(第一选项)添加参数{enableHighAccuracy:真,超时:20000,maximumAge:1000,精度:没有在文档中10 //10米} (第二个选项)设置线28 的#define RCT_DEFAULT_LOCATION_ACCURACY kCLLocationAccuracyBest //默认为kCLLocationAccuracyHundredMeters

相关问题