Да, то, что вы пытаетесь достичь, возможно, хотя синхронный запрос не нужен.
Посмотрите на этот код
function StoreGeo()
{
var address = $('input[name=zipcode]').val() + ', ' + $('input[name=city]').val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var ll = results[0].geometry.location.toString();
llarr = ll.replace(/[\(\) ]/g, '').split(',');
for(i = 0; i < llarr.length;i++)
{
$('#form').append($('<input type="hidden" name="'+(i == 0 ? 'lat' : 'long')+'">').val(llarr[i]));
}
$('#form').submit();
}
else
{
alert(status);
}
});
$('#form').unbind('submit');
return false;
}
$(document).ready(function () {
//init maps
geocoder = new google.maps.Geocoder();
$('#form').bind('submit',function() {
StoreGeo();
});
});
Итак, прикрепите обработчик отправки к форме, когда он будет отправлен, выполните гео-запрос на основе информации об адресе из вашей формы. Но в то же время отложите отправку, вернув false в обработчике.
Обработчик ответа создаст 2 скрытых текстовых поля 'lat' и 'long' и сохранит ответ. наконец форма отправляется клиентским скриптом, включая два новых поля. На стороне сервера вы можете хранить их в БД.
!! Обратите внимание, что это возможно, но, вероятно, противоречит условиям Google, как указано выше.