Не получается получить точную широту и долготу на устройстве ios с помощью watchPosition - PullRequest
0 голосов
/ 28 февраля 2019

Описание проблемы ::

Я работаю над собственным приложением для отслеживания реакции.В основном пользователи регистрируются из определенного места, и им нужно добраться до места назначения.Используя это приложение, мы выясняем путь, по которому они идут.Мне нужно получить геокодирование от пользователей, чтобы проверить местоположение, по которому он идет.Теперь он создает чистый путь в случае устройства Android, но имеет проблемы с ios.Для ios требуется огромный разброс кода.Я проверил это, путешествуя в одно и то же место, используя оба устройства (IOS и Android).Для Android он генерирует точные значения широты и долготы, но для ios существует огромный разброс.Почему это происходит?Я следовал за официальным документом о реакции на родные для настройки геолокации.Вы можете проверить эту ссылку: * https://facebook.github.io/react-native/docs/geolocation.html#ios

Мы используем пакет обслуживания реагировать на собственную геолокацию, Ссылка на GitHub

Это происходит, когда я обновляю реагирующую собственную версию на0,58

Код ::

this.watchId = Geolocation.watchPosition((response) => {
    this.currentWatchLocationTimeout = this.currentWatchLocationTimeout + WATCH_LOCATION_TIMEOUT;

    currentPosition.lat = this.convertToDecimalPoints(response.coords.latitude);
    currentPosition.lng = this.convertToDecimalPoints(response.coords.longitude);

    //... additional code

}, (error) => {
    this.onGeolocationErrorOccurCallback(error);
}, {
    enableHighAccuracy: true,
    distanceFilter: 5,
    showLocationDialog: true
});

Дополнительная информация ::

  • Реактив Native: 0,58
  • реакция-нативная-геолокация-служба: 2.0.0
  • платформа: ios (только)

1 Ответ

0 голосов
/ 08 марта 2019

Лучшее решение, которое работает для меня - это изменения в файлах собственной геолокации реагирования.Вам необходимо заменить несколько строк кода.Зайдите внутрь пакета пакета native,

Reaction-native / Библиотеки / Геолокация / RCTLocationObserver.m

Затем замените эту строку ::

#define RCT_DEFAULT_LOCATION_ACCURACY kCLLocationAccuracyHundredMeters

с этим ::

#define RCT_DEFAULT_LOCATION_ACCURACY 0.0

После этого замените эту строку ::

.accuracy = [RCTConvert BOOL:options[@"enableHighAccuracy"]] ? kCLLocationAccuracyBest : RCT_DEFAULT_LOCATION_ACCURACY,

на эту: *

.accuracy = RCT_DEFAULT_LOCATION_ACCURACY,

Вам необходимо непосредственно найти этилинии на вышеупомянутом пути.Я нашел это внутри коммитов git, вы также можете проверить эту ссылку :: ссылка

...