如何在react-native中实现自动检测用户位置

时间:2017-05-23 18:51:04

标签: react-native geolocation react-native-android react-native-ios google-location-services

我正在尝试使用地理位置API 在react-native中实现自动检测用户位置功能,但如果位置服务被禁用,则不会要求用户激活就像它在各种Android应用程序中一样,它要求用户使用谷歌位置服务激活它,然后获取用户的位置。

任何人都可以建议,我该如何实现此功能。还有什么方法可以为ios和android做这个吗?

2 个答案:

答案 0 :(得分:1)

您可以使用react-native-permissions轻松询问iOS和Android上的位置权限。

答案 1 :(得分:0)

如果您只需要自动检测地理位置,那么更好和最简单的方法是使用"navigator.geolocation"。您可以获取有关其用法的更多详细信息,以获取基于浏览器的API的位置here

您甚至不需要导入它,因为它已经被您的浏览器继承。您可以在班级内直接使用:

class className extends Component {


  state = {
    initialPosition: 'unknown',
    lastPosition: 'unknown',
 }

   watchID: ? number = null;
   componentDidMount = () => {
      navigator.geolocation.getCurrentPosition(
         (position) => {
            const initialPosition = JSON.stringify(position);
            this.setState({ initialPosition });
         },
         (error) => alert(error.message),
         { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
      );
      this.watchID = navigator.geolocation.watchPosition((position) => {
         const lastPosition = JSON.stringify(position);
         this.setState({ lastPosition });
      });
   }
   componentWillUnmount = () => {
      navigator.geolocation.clearWatch(this.watchID);
   }
}