Возникло исключение при выполнении блока пользовательского интерфейса: недопустимая область <center: +37.33233141, -122.03121860, диапазон: +0.04491556, -5.73770224> - PullRequest
1 голос
/ 28 марта 2019

Я создаю приложение с react-native-maps.При тестировании я настроил его с помощью кнопки, которая переключается между двумя различными местоположениями (DC и Concord NH), одним из которых является мое текущее текущее местоположение.У меня также есть "Найди меня!"кнопка, чтобы перейти к текущему местоположению.

В симуляторе Android, когда я нажимаю «найти меня», он переходит в Сан-Франциско, который, как я полагаю, находится там, где установлено местоположение симулятора.У меня нет реального устройства Android

На симуляторе iOS и на моем iPhone кнопки DC / NH работают, а на моем iPhone, когда я переключаюсь в DC, я вижу свою синюю точку.Однако как на симуляторе iOS, так и на моем iPhone, когда я нажимаю «найти меня», я получаю эту ошибку (ниже приведены координаты при работе на симуляторе:

Exception thrown while executing UI block:
Invalid Region <center: +37.33233141, -122.03121860, span: +0.04491556, -5.73770224>

Та же самая ошибка происходит, очевидно, с разнымикоординаты на моем iPhone.

Похоже, что Android и iOS переводят координаты по-разному, или что-то в этом роде. Они оба читают координаты, которые я даю для DC и NH, одинаково, и, кажется, показывают ту же областькогда я вызываю эти места.

Кстати, я использую Apple Maps на iOS - не готов сделать весь код извлечения для использования Google Maps.

Вот код, который яиспользуйте для получения текущего местоположения и преобразования его в числа, которые React Native сможет правильно понять:

 calculateRegion(latitude, longitude, accuracy) {
    const oneDegreeOfLongitudeInMeters = 111.32;
    const circumference = 40075 / 360;
    const latitudeDelta = accuracy / oneDegreeOfLongitudeInMeters;
    const longitudeDelta = accuracy * (1 / Math.cos(latitude * circumference));
    const region = { latitude, longitude, latitudeDelta, longitudeDelta };
    this.setState({ region });
  }

  getLocation = () => {
    navigator.geolocation.getCurrentPosition(position => {
      const lat = position.coords.latitude;
      const long = position.coords.longitude;
      const accuracy = position.coords.accuracy;
      this.calculateRegion(lat, long, accuracy);
    });
  };

У кого-нибудь есть идеи по этому поводу?

...