Navigator.geolocation.getCurrentPosition siempre obtiene el tiempo de espera en Android hasta que GPS / Location esté desactivado

app.controller('dashboard', function($scope){ $scope.getPosition = function(position){ $scope.acc = position.coords; $scope.lat = position.coords.latitude; $scope.lng = position.coords.longitude; $scope.$apply(); }; $scope.getPositionErr = function(error){ alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); }; navigator.geolocation.getCurrentPosition($scope.getPosition, $scope.getPositionErr, {maximumAge: 0, timeout: 6000, enableHighAccuracy:false}); }); 

Estoy usando Angular JS y Cordova para una aplicación de Android. Este código funciona bien en el escritorio, pero no en Nexus 4 con Lollipop. También el código del regulador está ejecutando después de deviceready según el requisito de Cordova

Yo he tratado

  • Ajuste HighAccuracy a false
  • Eliminación del complemento de geolocalización para que utilice la ubicación predeterminada de Wifi
  • Reinicio del dispositivo
  • Borrado del caché del navegador
  • Modo de avión activado / desactivado
  • Wifi activado / desactivado
  • Datos móviles activados / desactivados

Pero soy incapaz de obtener lat, larga y la geolocalización siempre obtiene tiempo de espera.

Sólo funciona cuando habilité la ubicación / GPS de configuración. Después de habilitarlo, el código funciona como se esperaba.

Navigator.geolocation.getCurrentPosition es sólo para GPS cuando la opción "enableHighAccuracy" se establece como 'true' (predeterminado). Es por eso que no puede obtener la ubicación actual a través del dispositivo móvil. Acerca de "que está trabajando en el escritorio", creo que debe haber abierto GPS en su navegador.

Utilicé generalmente código abajo para conseguir la posición sin importar que el GPS esté abierto o no.

 var positionOption = { timeout: 500, enableHighAccuracy: true }; var gpsSunccuss = function(currentPosition) { //use gps position }; var gpsFailed = function() { //use some 3rd party position solution(get position by your device ip) getPositionBy3rdParty(); }; navigator.geolocation.getCurrentPosition(gpsSunccuss, gpsFailed, positionOption); 

Por otro lado, puede establecer enableHighAccuracy como 'false'.

Tuve idéntico problema y esto lo arregló para mí

  {enableHighAccuracy:false,maximumAge:Infinity, timeout:60000} 
  • Los vídeos que no se reproducen en Android en un estado sin conexión cuando se usa appcache
  • Android: reducción de la calidad de los píxeles en las imágenes cargadas en WebView
  • RTSP streaming con resultados de video HTML5 en el servidor murió error (100,0) en Android
  • Subrayar el campo de entrada al escribir
  • ¿Cómo instalar la aplicación HTML5 en Android Market y Apples AppStore?
  • Decodificar código de barras de la matriz de datos 2d en HTML / JavaScript (Android)
  • ¿A dónde apunta LocalFileSystem.PERSISTENT?
  • Live Video Streaming para Android usando Phonegap?
  • Cómo fusionar archivos de audio y video en android
  • Soporte de lienzo HTML5 y vista Web de Android
  • ¿Cómo puedo desarrollar aplicaciones móviles usando HTML5?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.