Клуб API Карт

Как дождаться ответа от сервера при получении координат

alexander-kuropatkin
15 июля 2009, 00:40

У меня есть форма для ввода адресса:


<form id="formAddLoc" action="#" method="post">

<input type=text id="Address" />

<input type=hidden id="LongitudeValue" />

<input type=hidden id="LatitudeValue" />

<input type=hidden id="ErrorMessage" />

<input type="button" value="Create" onclick="GetCoords(Address.value)" />

</form>


При нажатии на кнопку вызывается функция на клиенте:


function GetCoords(address) {
            var addLocForm = document.getElementById("formAddLoc");
            var errorMessageContainer = document.getElementById("ErrorMessage");
            var longitudeContainer = document.getElementById("LongitudeValue");
            var latitudeeContainer = document.getElementById("LatitudeValue");
            var geocoder = new YMaps.Geocoder(address, { results: 1 });
            YMaps.Events.observe(geocoder, geocoder.Events.Load, function() {
                if (this.length()) {
                    alert("Местоположение объекта успешно определено.");
                    errorMessageContainer.value = "Success";
                    longitudeContainer.value = this.get(0).getCoordPoint().getX();
                    latitudeeContainer.value = this.get(0).getCoordPoint().getY()
                }
                else {
                    alert("Не удалось определить местоположение объекта по адресу.");
                    errorMessageContainer.value = "error: notfound";
                }
            });
            YMaps.Events.observe(geocoder, geocoder.Events.Fault,
                function(error) {
                    alert("Не удалось определить местоположение объекта по адресу.");
                    errorMessageContainer.value = "error: " + error.message;
                });
            addLocForm.submit();
        }


Проблема в том, что функция продолжает выполняться, не дожидаясь ответа от геокодера и отправляет форму, не успев получить ответ от геокодера.

Вопрос: как сделать так, чтобы addLocForm.submit(); происходил только после получения ответа от геокодера?