Отложить отправку формы до получения местоположения

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

$(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());
}
8
задан Michel 17 February 2016 в 14:34
поделиться