La geolocalización iónica 2 nativa no funciona en el dispositivo android

Estoy utilizando el plugin nativo 2 Geolocation de Ionic y no funciona como se esperaba. En primer lugar, añadir el complemento.

ionic plugin add cordova-plugin-geolocation 

A continuación, importar el complemento y emitir una llamada para obtener la posición actual.

 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) }; } } 

También he comprobado mi AndroidManifest.xml.

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

Me di cuenta de que el tiempo de espera siempre se supera. Si lo dejo al valor predeterminado (el tiempo de espera se establece en el infinito de forma predeterminada), luego unos 20 minutos más tarde, realmente obtengo una posición geográfica. Por supuesto, 20 minutos no es ideal.

También intenté usar el navigator como sigue. Pero obtengo exactamente los mismos resultados.

 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 ); 

Al realizar pruebas en Chrome , el código funciona como se esperaba; La única diferencia es que recibo una ventana emergente preguntando si quiero permitir que la página acceda a mi ubicación.

Vi a mucha gente tener el mismo problema en SO con Ionic también, pero eso es con la versión 1. Quería hacer esta pregunta en el contexto de Ionic 2.

Por cierto, también he actualizado Cordova y la versión está apareciendo como 6.0.2.

 npm update -g cordova 

Información de versión

  • Ionic 2.0.0-beta.30
  • Córdoba 6.0.2
  • Gulp CLI 1.2.1 y Local 3.9.1

Utilice este código:

 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); } 

Recuerde importar Geolocation :

 import { Geolocation } from 'ionic-native'; 

Y agrega el complemento:

 ionic plugin add cordova-plugin-geolocation 

Instalar las dos dependencias de cordova

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

Agrega estos permisos a 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" /> 

Tenga en cuenta, al ejecutar cordova iónico ejecutar android -l geolocalización lanzará este error inseguro. Probarlo en su navegador o hacer una ejecución sencilla con

 ionic cordova run adnroid 

Resolvió el problema para mí, espero que ayude a alguien más.

Probablemente encontré una solución. El problema era con el módulo de mina de GPS. Eventualmente, dejó de encontrar mi ubicación en cualquier sitio. He recargado mi teléfono y ahora todo funciona.

En primer lugar, compruebe si puede determinar su ubicación en el sitio, por ejemplo maps.google.com. Si no puede determinar su ubicación, el problema es con su teléfono. Trate de recargar o reflash.

Esto suele ser causado suero que ha agregado sólo el plugin iónico y se olvidó de agregar el plugin cordova (no está seguro de por qué no está instalado por el complemento iónico agregar comando):

 ionic plugin add cordova-plugin-geolocation 

y entonces:

 cordova plugin add cordova-plugin-geolocation 

Instalar el plugin cordova puede solucionar el error en algunas situaciones.

Esto también sucede cuando se ejecuta la aplicación en el navegador con ionic serve como cordova plugins no están disponibles.

  • (Ionic 2) Error al intentar recurrir a la ejecución de Cordova-lib: TypeError: No se puede leer la propiedad 'then' de undefined
  • Donde poner el archivo de sonido personalizado para notificaciones push en Ionic 2 para Android
  • Ionic2 / Cordova construir la aplicación de publicación con diferentes características. Ejemplo: Gratuito y pagado
  • Hacer una llamada HTTP POST en Ionic 2 da la respuesta prohibida
  • Custom cordova plugin de creación para el proyecto ionic2
  • Iónicos 2 problemas de rendimiento de desplazamiento
  • Pantalla blanca después de Splash en android - ionic 2
  • No se puede ejecutar la aplicación iónica 2 en el emulador de Android de Genymotion
  • Ionic v2 API de Google Maps Error de compilación de Android: no se puede acceder a AbstractSafeParcelable options.compassEnabled (controls.getBoolean ("compass"));
  • Ionic 2 dev y prod las variables de entorno
  • Cordova build android error: El sistema no puede encontrar la ruta especificada. Error: cmd: Error de comando con código de salida 1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.