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.
- LaunchNavigator Ionic2 plugin no está instalado
- Ionico 2: ¿Cómo puedo obtener mensajes de consola desde el dispositivo Android
- En el marco iónico ¿cómo establecer el primer botón de segmento de iones en estado activo por defecto?
- Error de instalación de Adb: INSTALL_CANCELED_BY_USER
- Ionic nativo de audio no funciona en Android
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
- No se puede encontrar el módulo "./app.module.ngfactory"
- Actualizar una página en ionic2
- Cuando emule Ionic App lanza TypeError: No se puede llamar al método undefined
- Cómo usar el as del proyecto con ionic 2
- No se pudo encontrar el contenedor gradle dentro de SDK de Android. Puede ser necesario actualizar su SDK de Android
- Error: spawn EACCES mientras que la construcción iónica android en ubuntu 14.04
- Solicitud personalizada Angular2
- Ionic Cordova en Android Studio (no se han encontrado herramientas de compilación instaladas)
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.
- ActionController InvalidAuthenticityToken en Api :: V1 :: UsersController # create
- Ayuda a un principiante a aprender las mejores prácticas de depuración de Eclipse / Android