Я создаю приложение с 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);
});
};
У кого-нибудь есть идеи по этому поводу?