Tengo una aplicación que intenta obtener configuraciones de ubicaciones del navegador, esto suele demorar un poco, así que quiero que se ejecute cuando se cargue la página. Sin embargo, si hace clic en el botón Enviar antes de que se haya ejecutado la devolución de llamada de ubicación, no tiene datos de ubicación. Mi pregunta es simple, ¿cómo espero a que termine la devolución de llamada de mi ubicación antes de enviar mi formulario? (sin algo tonto como una declaración de sueño).
Idealmente me gustaría mostrar un indicador de ocupado y esperar los datos. es posible? Tengo el código para hacer visible un indicador de ocupado, pero no estoy seguro de cómo puedo esperar elegantemente a que los datos estén disponibles.Retraso en el envío del formulario hasta que se recupera la ubicación
$(document).ready(function(){
var lat = "";
var lng = "";
var accuracy = "";
var locationFound = false;
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function positionSuccess(loc){
lat = loc.coords.latitude;
lng = loc.coords.longitude;
accuracy = loc.coords.accuracy;
locationFound = true;
});
}else{
alert("I'm sorry, your jerk browser doesn't support geolocation");
locationFound = true;
}
$('#locForm').submit(function(e){
$('#lat').val(lat);
$('#lng').val(lng);
$('#boundary').val($('#boundary-select').val());
}
Creo que este es un buen repliegue, pero yo preferiría tener habilitado el botón e introducir un retardo después de hacer clic en el botón en lugar de tener que tienen la botón deshabilitado por un tiempo en la carga de la página. – rooftop