Geolocalización HTML5: no funciona todo el time en iOS

Trabajando actualmente con la Geolocalización HTML5 y lo he probado en todos los browseres web y parece estar funcionando. Sin embargo, cuando pruebo la Geolocalización en el iPad, funciona para el iPad mini todo el time, pero cuando lo pongo en el iPad más grande (iPad 2), la location no parece funcionar todo el time.

Estoy tratando de hacer este lado de la web para que la solución pueda trasladarse a múltiples plataforms y no solo a iOS.

Editar:

Simplemente lo intenté, funciona en el browser Safari, pero no funciona dentro de la aplicación iOS.

¿Alguien tiene alguna idea de por qué no funciona?

Internet: probé el Wi-Fi y probé el punto de acceso, y también probé el Wi-Fi encendido sin conectarse a anyones.

Versión de iOS: 8.3

La location se debe mostrar aquí:

$("#status").html(currentLat + " " + currentLng); 

Código:

 <!DOCTYPE html> <html> <head> <script src="js/jquery-1.11.3.min.js"></script> <script> //example $(document).ready(function(){ setInterval(function(){ getLocation(function(position) { //do something cool with position currentLat = position.coords.latitude; currentLng = position.coords.longitude; $("#status").html(currentLat + " " + currentLng); }); }, 1000); }); var GPSTimeout = 10; //init global var NOTE: I noticed that 10 gives me the quickest result but play around with this number to your own liking //function to be called where you want the location with the callback(position) function getLocation(callback) { if(navigator.geolocation) { var clickedTime = (new Date()).getTime(); //get the current time GPSTimeout = 10; //reset the timeout just in case you call it more then once ensurePosition(callback, clickedTime); //call recursive function to get position } return true; } //recursive position function function ensurePosition(callback, timestamp) { if(GPSTimeout < 6000)//set at what point you want to just give up { //call the geolocation function navigator.geolocation.getCurrentPosition( function(position) //on success { //if the timestamp that is returned minus the time that was set when called is greater then 0 the position is up to date if(position.timestamp - timestamp >= 0) { GPSTimeout = 10; //reset timeout just in case callback(position); //call the callback function you created } else //the gps that was returned is not current and needs to be refreshed { GPSTimeout += GPSTimeout; //increase the timeout by itself n*2 ensurePosition(callback, timestamp); //call itself to refresh } }, function() //error: gps failed so we will try again { GPSTimeout += GPSTimeout; //increase the timeout by itself n*2 ensurePosition(callback, timestamp);//call itself to try again }, {maximumAge:0, timeout:GPSTimeout} ) } } </script> </head> <body> <div id="wrapper"> <!-- Page heading --> <h1>Geolocation</h1> <!-- Status --> <p>Finding your location: <span id="status">checking...</span></p> </body> </html> 

Pensé que primero deberías get el permiso de location.

Agregue NSLocationWhenInUseUsageDescription o NSLocationAlwaysUsageDescription en App-Info.plist y entréguela.

Prueba con arriba y mira si eso te ayuda.

simple para ningún timer

 <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> </head> <body> <BR><BR><BR><BR> <button onclick="getLocation()">get Location</button> <script> function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(alertPosition); } else { alert("Geolocation is not supported."); } } function alertPosition(position) { alert("Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude); } </script> </body> </html>