расчет расстояния в React Native - PullRequest
0 голосов
/ 01 июня 2018

Я хочу получить расстояние от моего текущего местоположения до пункта назначения.В моем файле JSON есть долгота и широта пункта назначения.Как я могу получить долготу и широту моего текущего местоположения, чтобы я мог рассчитать расстояние между двумя точками?Я попробовал приведенный ниже код в моем эмуляторе Android, но у меня постоянно возникают проблемы с тайм-аутом

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

class GeolocationExample extends Component {
  constructor(props) {
    super(props);

    this.state = {
      latitude: null,
      longitude: null,
      error: null,
    };
  }

  componentDidMount() {
    navigator.geolocation.getCurrentPosition(
      (position) => {
        this.setState({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
          error: null,
        });
      },
      (error) => this.setState({ error: error.message }),
      { enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 },
    );
  }

  render() {
    return (
      <View style={{ flexGrow: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text>Latitude: {this.state.latitude}</Text>
        <Text>Longitude: {this.state.longitude}</Text>
        {this.state.error ? <Text>Error: {this.state.error}</Text> : null}
      </View>
    );
  }
}

export default GeolocationExample;

Я просто хочу узнать расстояние от текущего местоположения до пункта назначения в милях.Как я могу этого достичь?Ниже показан экран с ошибкой enter image description here, которую я получаю:

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Добавление другого ответа в качестве лучшего решения проблемы.В качестве решения для location timeout issue я использую act-native-geolocation-service , и она работает как чудо.

Эта библиотека была создана для устранения проблемы тайм-аута местоположения на Androidс текущей реализацией response-native Geolocation API.Эта библиотека пытается решить эту проблему, используя новый FusedLocationProviderClient API Сервиса Google Play, который Google настоятельно рекомендует использовать по умолчанию в API-интерфейсе определения местоположения платформы Android.

0 голосов
/ 01 июня 2018

Сегодня я столкнулся с той же проблемой: я обнаружил, что если вы выполняете тесты " внутри вашего офиса " с помощью физического устройства, то GPS-локатор может быть поврежден внешними вещами, такими как стены, или простымипричина, по которой вы пытаетесь выполнить эту операцию "в помещении" и, как правило, ее следует выполнять на открытом воздухе.

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

Надеюсь, это поможет вам.

...