2016-02-09 27 views
8

Sto costruendo la mia prima app Android con react-native. Quello che voglio fare è visualizzare la mia posizione corrente. Ma non sembra funzionare sul mio emulatore . Invece ho ricevuto un errore "Location timeed" nella console. Ecco un esempio di codice dal mio file idex.android.js:Richiesta di posizione scaduta su emulatore Android con React-Native

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

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

Il codice è molto semplice in modo non credo che l'errore viene da qui. ho aggiunto questi permessi nel mio file AndroidManifest.xml (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> 

Non vedo nulla di male nemmeno qui, quindi penso che il problema deriva dal emulatore di Android. Utilizzo Android Virtual Device Manager per creare un Nexus 5, Google API (Google Inc.) - Dispositivo virtuale API Level 23. La geolocalizzazione è stata attivata sul dispositivo ma non ho visto alcun strumento di geolocalizzazione negli strumenti di sviluppo o nella configurazione. Quindi probabilmente l'errore viene da qui. Il dispositivo virtuale non restituisce alcuna posizione.

Come posso risolvere questo problema?

+1

Prova http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator – deanmcpherson

+0

grazie, non so perché non ho trovato questa domanda in primo luogo. – manu

+0

** Sto affrontando lo stesso problema, hai trovato qualche soluzione per questo? ** nessuna delle risposte da qui non mi ha aiutato. Sono in grado di impostare la posizione in emulatore e posso vedere i risultati in Google Map in emulatore, ma per nativo è solo un errore di timeout. – manjs

risposta

6

set è enableHighAccuracy falso, il problema sarà risolto

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

Tenendo presente che 'enableHighAccuracy: false' può causare _very_ posizioni imprecise. – Bataleon