Как реализовать автоматическое определение местоположения пользователя в react-native

Я пытаюсь реализовать функцию автоматического определения местоположения пользователя в режиме реагирования, используя API геолокации, но если служба определения местоположения отключена, она не просит пользователя активировать ее, как она делает в различных приложениях для Android, где он просит пользователя активировать его с помощью служб определения местоположения Google, а затем получает местоположение пользователя.

Может ли кто-нибудь предложить, как я могу реализовать эту функцию. И есть ли способ сделать это как для ios, так и для android?


person Monika Aggarwal    schedule 23.05.2017    source источник


Ответы (2)


Вы можете использовать react-native-permissions, чтобы запросить разрешение на определение местоположения как на iOS, и Андроид.

person Alisamix    schedule 23.05.2017

Если вам просто нужно автоматическое определение географического местоположения, то лучший и самый простой способ — использовать "navigator.geolocation". Вы можете получить более подробную информацию о его использовании для получения местоположения здесь API на основе браузера.

Вам даже не нужно импортировать, так как он уже унаследован вашим браузером. Вы можете использовать внутри класса напрямую:

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);
   }
}
person muhammad tayyab    schedule 26.03.2019