2016-05-05 37 views
0

Ich versuche, den Standort des Benutzers in einer Android React Native-Anwendung zu erhalten. Ich habe angefangen, indem ich dem React Native Geolocation Tutorial folge, aber habe kein Glück.Reagieren Native Android GeoLocation

Ich habe die entsprechenden Berechtigungen für das Android-Projekt hinzugefügt und diesen Code in das reagieren native App eingefügt:

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) 

    } 

Ich habe auch die initialPosition Variable definiert als ‚unbekannt‘ genau wie im Tutorial. Wenn das Beispiel ausgeführt wird, druckt die Variable initialPosition unbekannt. Dann, ungefähr 5 Sekunden später, zeigt der Alarm einen 'undefinierten' Fehler an.

Ich bin ein wenig verwirrt, was passiert, weil der Fehler null ist. Vielleicht instanziiere ich die "Geolocation" falsch? Leider kann ich nicht viele Informationen dazu finden, daher wird jede Hilfe geschätzt.

Antwort

1

Hope this ein bisschen helfen kann:

  1. Sie sind die initialPosition außerhalb der Rückruf anmelden. Das bedeutet, dass initialPosition unbekannt ist, weil der Callback noch nicht ausgeführt wurde und daher die initialPosition Variable noch nicht aktualisiert wurde.
  2. Versuchen Sie, die error Variable protokollieren nicht nur eine Warnung von error.message. Es ist möglich, dass es eine error, aber keine error.message gibt.
+0

Danke für die Tipps. Drucken der Fehler zurückgegeben "Kein verfügbarer Standort Anbieter" so zumindest jetzt habe ich eine Richtung zu gehen. Nicht sicher, warum dies nicht in der Nachricht gespeichert wurde. –

+0

Haben Sie versucht, ohne enableHighAccuracy: true. I.E: enableHighAccuracy: false? – IdeasForAName

+0

Es stellte sich heraus, dass auf dem Gerät keine Standorte aktiviert waren. Vorsätzlich nicht eine meiner feineren Stunden ... Trotzend muss diesen Fall in der Zukunft fangen! –

0
  1. diesen Code versuchen, es sein kann, hilft Ihnen und innerhalb this.state als null Breiten- und Längenvariable in Konstruktor zu definieren.
  2. wenn Sie JSON-String drucken möchten dann dann ein Array im Zustand definieren verwenden, indem Sie das Array Einstellung 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 } 
); 
} 
Verwandte Themen