Добавить геолокацию для создания собственного приложения React - PullRequest
0 голосов
/ 01 апреля 2020

Я создал свое первое приложение React Native, используя последний CLI Expo, используя инструкции из React Native docs :

npm install -g expo-cli
npm expo init AwesomeProject

Позже я хотел добавить библиотеку геолокации для этого приложения, и кажется, что все автосвязь не хочет работать на меня. Я использовал предоставленные инструкции:

yarn add @react-native-community/geolocation

И я не выполнял ручное связывание, потому что я использую React Native в самой новой на данный момент версии (выше 0.59, как сказано в файле readme библиотеки). После добавления примера кода:

import Geolocation from '@react-native-community/geolocation';
Geolocation.getCurrentPosition(info => console.log(info));

Я начал получать ошибки, связанные с библиотекой. После ручного вызова команды link она все еще, к сожалению, не работает.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Я на самом деле выпрыгнул из этих библиотек и прошел полную экспозицию (но я все еще не уверен, что это правильный подход):

import { useState, useEffect } from "react";
import * as Permissions from "expo-permissions";
import * as Location from "expo-location";

export const useLocation = () => {
  const [location, setLocation] = useState();

  useEffect(() => {
    async function setLocationWithPerms() {
      const permissions = await Permissions.askAsync(Permissions.LOCATION);

      if (permissions.status === "granted") {
        const currentLocation = await Location.getCurrentPositionAsync({});
        setLocation(currentLocation);
      }
    }
    setLocationWithPerms();
  }, []);

  return location;
};
0 голосов
/ 01 апреля 2020

Иногда Geolocation.getcurrentPosition получают некоторую ошибку ..

import React, {Component} from 'react';
import { Text, View, StyleSheet } from 'react-native';

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      latitude: 'lat',
      longitude: 'long',
    }
  }

  componentDidMount() {
    navigator.geolocation = require('@react-native-community/geolocation');
    navigator.geolocation.getCurrentPosition(
      (position) => {
        this.setState({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
        });
      },
      (error) => alert(error),
      { enableHighAccuracy: false, timeout: 200000, maximumAge: 1000 },
    );
  }

  render(){
  return (
    <View style={styles.container}>
      <Text style={styles.paragraph}>
        {this.state.latitude}
         </Text>
      <Text style={styles.paragraph}>
        {this.state.longitude}
         </Text>
    </View>
  );
}
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
  paragraph: {
    margin: 24,
    fontSize: 18,
    fontWeight: 'bold',
    textAlign: 'center',
  },
});

Это простой демонстрационный пример геолокации. Попробуйте это. И спросите, если какой-либо запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...