2016-06-22 31 views
6

Sto utilizzando il plug-in di geolocalizzazione Ionic 2 nativo e non funziona come previsto. Innanzitutto, aggiungo il plug-in.La geolocalizzazione ionica 2 non funziona su dispositivo Android

ionic plugin add cordova-plugin-geolocation 

Quindi ho importato il plug-in ed emesso una chiamata per ottenere la posizione corrente.

import { Geolocation } from 'ionic-native'; 
import { Geoposition, GeolocationOptions } from 'ionic-native/dist/plugins/geolocation'; 

export class MyComponent { 
protected getLocation():Promise<Geoposition> { 
    let options:GeolocationOptions = { 
    maximumAge: 0, timeout: 5000, enableHighAccuracy: false 
    }; 
    return Geolocation.getCurrentPosition(options) 
    .catch(error => { console.error(error.message) }; 
} 
} 

Ho anche controllato il mio AndroidManifest.xml.

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

Ho notato che il timeout viene sempre superato. Se lo lascio al valore predefinito (timeout è impostato su infinito per impostazione predefinita), quindi circa 20 minuti dopo, ottengo effettivamente una posizione geografica. Ovviamente, 20 minuti non sono l'ideale.

Ho anche provato a utilizzare navigator come segue. Ma ottengo lo stesso identico risultato.

navigator.geolocation.getCurrentPosition(
position => { 
    console.info('using navigator'); 
    console.info(position.coords.latitude); 
    console.info(position.coords.longitude); 
}, 
error => { 
    console.warn('using navigator'); 
    console.warn(error.code); 
    console.warn(error.message); 
}, 
options 
); 

Durante il test su Chrome, il codice funziona come previsto; l'unica differenza è che ottengo un popup che chiede se voglio consentire alla pagina di accedere alla mia posizione.

ho visto un sacco di persone hanno lo stesso problema su SO con ionica troppo, ma che è con la versione 1. Ho voluto fare questa domanda nel contesto di ionica 2.

A proposito, ho' abbiamo anche aggiornato Cordova e la versione è mostrata come 6.0.2.

npm update -g cordova 

informazioni sulla versione

  • ionico 2.0.0-beta.30
  • Cordova 6.0.2
  • Gulp CLI 1.2.1 e locale 3.9.1
+1

Di fronte allo stesso problema. Hai trovato una soluzione? – likerRr

+0

trovata soluzione? –

+0

no, non ho trovato una soluzione. l'altro giorno ho guardato ionic 2, e c'è un nuovo plugin per la geolocalizzazione, ho intenzione di provarlo. posterò il link più tardi e cercherò di vedere se è d'aiuto. –

risposta

0

Probabilmente Ho trovato una soluzione. Il problema era con il mio modulo GPS. Alla fine ha smesso di trovare la mia posizione in qualsiasi sito. Ho ricaricato il mio telefono e ora tutto funziona.

Quindi, per prima cosa, verificare se è possibile determinare la posizione sul sito come maps.google.com. Se non è in grado di determinare la tua posizione, il problema è con il tuo telefono. Prova a ricaricarlo o a rifletterlo.

4

di questo codice:

if (navigator.geolocation) { 
     var options = { 
     enableHighAccuracy: true 
     }; 

     navigator.geolocation.getCurrentPosition(position=> { 
     console.info('using navigator'); 
     console.info(position.coords.latitude); 
     console.info(position.coords.longitude); 
     }, error => { 
     console.log(error); 
     }, options); 
    } 

Ricordati di importare Geolocation:

import { Geolocation } from 'ionic-native'; 

e aggiungere plugin:

ionic plugin add cordova-plugin-geolocation 
+0

Funzionerà senza errori. grazie @Felipe –

+0

Questo funziona magnificamente. Nella versione più recente con promesse si farebbe geolocation.getCurrentPosition (options) .then ((position) => {// qualche logica qui}); – Kaylined

+0

come posso lasciare che questa funzione venga eseguita se la posizione è disattivata, quindi accenderla. Intendo dire che se la posizione è off la geolocalizzazione restituirà un errore, quindi se successivamente lo accendo mentre sono nella stessa pagina, la geolocalizzazione non verrà eseguita di nuovo, quindi come posso lasciarlo girare di nuovo come ascoltatore sullo stato della posizione. –

0

Questo di solito è causato siero di latte si hanno solo aggiunto il plugin ionica e ho dimenticato di aggiungere il plugin cordova (non sono sicuro perché non è installato da plugin ionico aggiungere comman d):

ionic plugin add cordova-plugin-geolocation 

e poi:

cordova plugin add cordova-plugin-geolocation 

installato il plugin Cordova può correggere l'errore in alcune situazioni.

Questo accade anche quando si esegue l'applicazione sul browser con ionic serve poiché i plug-in Cordova non sono disponibili.

1

installare sia le dipendenze Cordova

cordova plugin add cordova-plugin-geolocation 
cordova plugin add cordova-plugin-whitelist 

aggiungere questo autorizzazioni per AndroidMainfest.xml

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

Tenete a mente, quando si esegue ionica corsa Cordova Android -l geolocalizzazione getteranno questo errore non protetta. test su ur browser o fare una semplice corsa con

ionic cordova run adnroid 

E 'risolto il problema per me, spero che aiuta a qualcun altro.

+0

Questo ha funzionato per me, grazie –

Problemi correlati