У меня есть приложение, которое пытается получить настройки местоположения из браузера, это обычно занимает некоторое время, поэтому я хочу, чтобы оно запускалось при загрузке страницы. Однако, если вы нажмете кнопку отправки до того, как будет запущен обратный вызов местоположения, у вас не будет данных о местоположении. Мой вопрос прост: как мне дождаться завершения обратного вызова об успешном определении местоположения, прежде чем отправлять форму? (без чего-то глупого, например, заявления о сне).
В идеале я хотел бы мигать индикатором занятости и ждать данных. Это возможно? У меня есть код, чтобы сделать индикатор занятости видимым, но я не уверен, как элегантно дождаться, когда данные будут доступны.
$(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());
}