2012-03-16 13 views
7

Cuando corroGeolocalización no se detiene en Phonegap

window.onload = function() { 
    document.addEventListener("deviceready", getGeolocation); 
} 

function getGeolocation() { 
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {maximumAge: 0}); 
} 

o

function getGeolocation() { 
watchGeoMarkerProcess = navigator.geolocation.watchPosition(updateCallback, errorCallback); 
} 

y luego

function updateCallback(position) { 
    if (position.coords.accuracy < 100) { 
      navigator.geolocation.clearWatch(watchGeoMarkerProcess); 
    } 
} 

en mi aplicación en iOS 5 usando PhoneGap parece quedarse atascado, ya que el ícono indicador de geolocalización permanece en la barra superior y nunca desaparece, lo cual interpreto que el GPS no se apaga Además, a veces no obtengo ninguna coordenada, lanzando un error de tiempo de espera.

No creo que haya nada de malo en el código, ya que funciona muy bien como una aplicación web.

¿Alguna idea?

+0

FYI, esto parece ser un problema no en última Córdoba (FTW). Funciona bien para mí ahora usando 'ondeviceready' y' watchPosition' + 'clearWatch'. – jenswirf

Respuesta

3

navigator._geo es la aplicación 'real' Creo. He visto recientes commits de git donde están tratando de sobrepasar navegador.geocation pero aparentemente fallando en iOS. Mirar el código fuente del teléfono me dio la idea de probar la llamada real en su lugar.

Aquí está el git commit: http://mail-archives.apache.org/mod_mbox/incubator-callback-commits/201203.mbox/%[email protected]%3E

Aquí hay otro hilo en el problema: https://groups.google.com/forum/?fromgroups#!topic/phonegap/W32yYpV28W8

ACTUALIZACIÓN: Tengo cierto grado de éxito ahora: Editar sus phonegap.js, comente las líneas 3451-3453 que se ve así: __proxyObj (navigator.geolocation, navigator._geo, ...

Recibirá una fea alerta de permiso ... pero la ubicación debería funcionar. El razonamiento detrás de esto el cambio es que ahora usarás la detección de ubicación de safari, no PhoneGaps.

UPDATE2: ..y el problema con PhoneGap resultó ser un conflicto con otra biblioteca de JavaScript, en este caso, dragdealer.js. Así que comprueba si hay algún nombre de variable sospechoso como "Ubicación" o "Posición" en cualquier otro javascript que estés utilizando. Por alguna razón, este conflicto no fue un problema en plataformas que no sean iOS.

+0

se supone que debe responder al siguiente. – Ryan

+0

Gracias por echar un vistazo.Lástima que condujo a otro gran problema, lo que significa que realmente no puedo usarlo. En cuanto a los conflictos de JS, este no es un problema para mí, al menos porque no estoy utilizando ninguna biblioteca en absoluto. – jenswirf

1

Por lo que vale, tengo el mismo problema y estas correcciones no funcionaron. Pero es posible que para usted:

  • asegúrese de obtener la ubicación después onDeviceReady() se ha llamado
  • intentar usar navigator._geo.getCurrentPosition
+0

¿Hay algo más en esa solución 'navigator._geo.getCurrentPosition'? Parece ser un método personalizado que no tengo ... – jenswirf

0

Tuve el mismo problema, aunque en Android.

Añadiendo la opción enableHighAccuracy causó que para empezar a trabajar:

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