2016-02-09 9 views
8

Ich baue meine erste Android-App mit react-native. Ich möchte meinen aktuellen Standort anzeigen. Aber es scheint nicht auf meinem Emulator zu funktionieren. Stattdessen erhalte ich einen "Location Request Timeout" Fehler in der Konsole. Hier ist ein Beispiel von Code aus meiner idex.android.js Datei:Location Anfrage Zeitüberschreitung auf Android-Emulator mit React-Native

initGeoloc() { 
    navigator.geolocation.getCurrentPosition(
    (position) => { 
     console.log(JSON.stringify(position)); 
    } 
    ); 
} 

render() { 
    this.initGeoloc(); 
    ... some more code and the view 

Der Code ist sehr einfach, so dass ich denke, nicht der Fehler von hier kommt. habe ich diese Erlaubnis in meiner AndroidManifest.xml Datei (ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION):

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.myapp"> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <application 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:icon="@mipmap/ic_launcher" 
     android:theme="@style/AppTheme"> 
     <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 
     <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> 
     <uses-library android:name="com.google.android.maps" /> 
     <meta-data android:name="com.google.android.geo.API_KEY" android:value="mykey"/> 
</application> 

ich etwas falsch hier auch nicht sehen, so dass ich denke, das Problem aus dem Android-Emulator kommt. Ich benutze den Android Virtual Device Manager, um ein Nexus 5, Google APIs (Google Inc.) - API Level 23 virtuelles Gerät zu erstellen. Die Geolocation ist auf dem Gerät aktiviert, aber ich habe in den Entwicklungswerkzeugen oder der Konfiguration kein Geolocation-Tool gesehen. Also kommt der Fehler wahrscheinlich von hier. Das virtuelle Gerät gibt keinen Standort zurück.

Wie kann ich das beheben?

+1

Versuchen gelöst werden http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator – deanmcpherson

+0

danke, ich weiß nicht, warum ich diese Frage überhaupt nicht gefunden habe. – manu

+0

** Ich stehe vor dem gleichen Problem, hast du irgendeine Lösung dafür gefunden? ** Irgendeine der Antworten von hier hat mir nicht geholfen. Ich bin in der Lage, den Standort im Emulator zu setzen, und ich kann die Ergebnisse in Google Map im Emulator sehen, aber für native es ist nur eine Auszeit Fehler werfen. – manjs

Antwort

6

Satz ist enableHighAccuracy falsch, wird das Problem

navigator.geolocation.getCurrentPosition((position) => { 
    console.log(position); 
}, error => console.error(error), { enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 }); 
+0

Beachten Sie, dass 'enableHighAccuracy: false' zu ​​sehr ungenauen Positionen führen kann. – Bataleon

Verwandte Themen