Befolgen Sie den Benutzerstandort auf React Native AirBnb's MapView

Ich benutze die Karte von airbnb für die Antwort auf meine App. Diese Frage ist für die Android-App, da ich nicht um die iOS App noch nicht bekommen.

Mein Problem:

Navigator.geolocation funktioniert gut auf emulator, aber dauert zu lange auf echte geräte, bis zu dem Punkt, den es manchmal mal auf älteren Geräten ausläuft.

Was ich bemerkt habe:

Wenn showsUserLocation prop auf true gesetzt ist, kann ich die native "aktuelle Position" Markierung auf der Karte sehen, bevor getCurrentPosition auflöst.

Was ich möchte:

  1. Ich möchte, dass meine Region immer auf den Standort des Nutzers zentriert ist.
  2. Ich möchte entweder einen Weg, um native Geolokation api zugreifen (sollte schneller sein?), Oder vielleicht jemand mir zu sagen, was ich falsch mache Unten ist ein Codebeispiel.
  3. Ich möchte noch den Standort des Benutzers erkennen, auch nachdem die Standortdienste ein- / ausgeschaltet wurden. Dies ist das Verhalten der showsUserLocation Stütze, aber es scheint einmal watchPostion Fehler, es hält ganz auf.

Hier ist was ich bisher habe, es ist ganz einfach wie es ist:

  componentDidMount() { navigator.geolocation.getCurrentPosition( (position) => { console.log("getCurrentPosition Success"); this.setState({ region: { ...this.state.region, latitude: position.coords.latitude, longitude: position.coords.longitude, } }); this.props.resetNotifications(); this.watchPosition(); }, (error) => { this.props.displayError("Error dectecting your location"); alert(JSON.stringify(error)) }, {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000} ); } watchPosition() { this.watchID = navigator.geolocation.watchPosition( (position) => { console.log("watchPosition Success"); if(this.props.followUser){ this.map.animateToRegion(this.newRegion(position.coords.latitude, position.coords.longitude)); } }, (error) => { this.props.displayError("Error dectecting your location"); }, {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000} ); } 

  • Reagiere Native Twilio Android-Fehler
  • Reagieren Native Android App verbraucht 30mA pro Stunde, obwohl App im Hintergrund ist
  • Wie kann ich ein Android-Gerät im Android-Emulator "schütteln", um das dev-Menü aufzurufen, um meine React Native App zu debuggen
  • Erstellen von benutzerdefinierten Benutzeroberflächenkomponenten für Android auf React Native. Wie kann ich Daten an JS senden?
  • React-native mit Android Studio
  • Reagieren Sie Native nicht die Entwicklung auf Windows (noch)?
  • Reagiere Native Android Fetch fehlgeschlagen auf Verbindung zu lokaler API
  • Konnte nicht finden tools.jar Reagieren Native Android In Windows 10
  • 2 Solutions collect form web for “Befolgen Sie den Benutzerstandort auf React Native AirBnb's MapView”

    Ich habe immer gesehen watchPosition iffy zwischen verschiedenen Browsern, eine Sache, die für mich gearbeitet hat, ist es, mit getCurrentPosition in einem setInterval zu ersetzen, damit es die Position alle paar Sekunden bekommt, und wenn es einmal versagt, wird es das nächste Intervall wiederholen, im Gegensatz zu watchPosition die Hört auf zu sehen, ob ein Fehler auftritt.

    Generell Browser Geolocation ist nicht sehr zuverlässig, können Sie diesen Thread für einige Fragen https://github.com/facebook/react-native/issues/7495

    Eine andere Alternative, die definitiv schneller und vielleicht zuverlässiger ist, ist die native Geolocation API zu verwenden. Überprüfen Sie diese Frage für Bibliotheken, die native Geolocation für die Reaktion native React-native Android Geolocation aussetzen

    Nicht sicher, ob dies Ihr Problem lösen wird, aber versuchen Sie dies:

     navigator.geolocation.getCurrentPosition( (position) => { console.log("getCurrentPosition Success"); this.setState({ region: { ...this.state.region, latitude: position.coords.latitude, longitude: position.coords.longitude, } }, () => { this.props.resetNotifications(); this.watchPosition(); }); }, 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.