2016-05-05 2 views
0

Я пытаюсь получить местоположение пользователя в приложении Android React Native. Я начал с React Native Geolocation Tutorial, но мне не повезло.React Native Android GeoLocation

Я добавил соответствующие разрешения для проекта Android и вставить этот код в среагировать родное приложение:

componentDidMount() { 

    navigator.geolocation.getCurrentPosition(
     (position) => { 
     var initialPosition = JSON.stringify(position); 
     this.setState({initialPosition}); 
     }, 
     (error) => alert(error.message), 
     {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000} 
    ); 
    console.log("Initial position: " + this.state.initialPosition) 

    } 

У меня также есть initialPosition переменного, определенная как «неизвестные» так же, как в учебнике. Когда пример запускается, переменная initialPosition печатает неизвестно. Затем примерно через 5 секунд в сообщении появляется сообщение об ошибке «undefined».

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

ответ

1

Надеется, что это может немного помочь:

  1. Вы протоколирование initialPosition вне обратного вызова. Это означает, что initialPosition будет неизвестно, поскольку обратный вызов еще не запущен, и поэтому переменная initialPosition еще не обновлена.
  2. Попробуйте зарегистрировать переменную error, а не только сообщать об этом error.message. Возможно, что есть error, но не error.message.
+0

спасибо за советы. Печать полученной ошибки «Нет доступного поставщика местоположения», так что по крайней мере теперь у меня есть направление для входа. Не знаете, почему это не было сохранено в сообщении. –

+0

Вы пробовали без разрешенияHighAccuracy: true. I.E: enableHighAccuracy: false? – IdeasForAName

+0

Оказывается, у меня не было мест, включенных на устройстве. Ободряюще не один из моих более прекрасных часов ... Определенно нужно будет поймать этот случай в будущем! –

0
  1. попробовать этот код может быть поможет и определить широту и долготу переменную в конструкторе внутри this.state утратившим.
  2. , если вы хотите напечатать строку JSON затем определить массив в состоянии затем использовать, установив this.setState массив
- Don't forget to give location permission in manifest file 

- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

componentDidMount(){ 
    navigator.geolocation.getCurrentPosition((position)=>{ 
     //const ipos = JSON.stringify(Position); 
     this.setState({ 
      latitude: position.coords.latitude, 
      longitude: position.coords.longitude, 
      }); 
    }, 
    { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 } 
); 
}