2012-10-09 26 views
6

versión PhoneGap: 2.0.0. Android API nivel 16 (versión 4.0.3). Ejemplo de código que impulsa a un error:PhoneGap. No se pudo iniciar servicio de geolocalización

navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true}); 

function onSuccess(position) { 
    console.log('latitude: '+ position.coords.latitude); 
    console.log('longitude: '+ position.coords.longitude);     
} 

function onError(error) { 
    console.log('Appeared error : '+ error.message);     
} 

siempre conseguir un error en emulador Failed to start Geolocation service, código de error 2. Incluso si enviar las coordenadas GPS a través de la consola Android o DDMs

Android permisos de manifiesto siguientes:

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

Respuesta

6

¿Está probando este solamente en el emulador? El servicio de geolocalización siempre falla en mi emulador de Android pero no en un dispositivo real.

EDIT: Por favor, intente utilizar el siguiente código

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(myPositionSuccess, myPositionError, {maximumAge: 300000, timeout:10000, enableHighAccuracy : true}); 
}; 
+0

tengo un dispositivo real con la versión 2.3 de Android, pero no tienen un dispositivo con la versión 4.x. Así que estoy probando en emulador. Sí, en el dispositivo real no hay tal error. Solo en emulador. –

+0

Intenta agregar ese eventListener. – jmpenetra

+0

@ JoãoPenetra he añadido esto a mi código y lo consiguió a no devuelve ningún error! ¡Gracias por eso! Pero ... ahora dobla mi solicitud de JSONP a Google Fusion Tables, que también usa la ubicación. ¿Puedes pensar en alguna razón por la cual haría dos llamadas usando 'enableHighAccuracy'? Sin eso, solo devuelve 1 conjunto de datos, pero arroja un error primero. Aquí está el archivo: https://github.com/jamez14/TrailFinder/blob/master/TrailFinder/www/js/map.js – jamez14

6

Es necesario configurar la opción enableHighAccuracy a true mientras que usted está tratando de obtener la ubicación.

navigator.geolocation.getCurrentPosition(onSuccess, onError,{enableHighAccuracy:true}); 

Por otra parte, a especificar las coordenadas de su posición en el emulador,

Eclipse -> Abrir perspectiva -> DDMS -> Control del emulador -> Localización Controles

Especifique el coordenadas de la posición y pulse "Enviar".

0

He tratar de solucionar este problema durante semanas. Busco en la red y parece que la mayoría de la gente está teniendo este problema con respecto al teléfono cada vez que se están desarrollando para Android. La solución fue probar mi código en un dispositivo que tiene GPRS. También asegúrese de que antes de ejecutar su código, su GPRS y su wifi estén habilitados. Evite usar emulador para probar GPRS porque faltan muchas características y fallas.

Cuestiones relacionadas