Tak, to, co próbujesz osiągnąć, jest możliwe, chociaż żądanie synchroniczne nie jest potrzebne.
Spójrz na ten kod
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();
});
});
Więc dołączyć złożyć obsługi do formy, gdy zostanie złożony wniosek geo zrobić na podstawie informacji adresowej z formularza. Ale jednocześnie odkładaj przesyłanie, zwracając wartość false w programie obsługi. Program obsługi odpowiedzi utworzy 2 ukryte pola tekstowe "lat" i "długo" i zapisze odpowiedź. wreszcie formularz jest składany przez skrypt klienta, w tym dwa nowe pola. Po stronie serwera można przechowywać je w DB.
!! Zauważ, że jest to możliwe, ale prawdopodobnie jest niezgodne z warunkami Google, jak wspomniano powyżej.
Mam formularz, który zawiera adres. W ramach sprawdzania poprawności danych formularza rozważałem użycie geokodera Google do sprawdzenia adresu. Potrzebuję również wartości szerokości i długości geograficznej, które należy wprowadzić do mojej bazy danych. Wiem, że mogę to zrobić za pomocą funkcji wywołania zwrotnego, ale to wygląda na włamanie i byłoby bardziej skomplikowane. – giroy
Geokoder jest w całości przeznaczony do użycia z funkcją wywołania zwrotnego. Nie martw się, to nie jest hack. :) To naprawdę twoja jedyna opcja. Pamiętaj jednak, że złamiesz Warunki korzystania z Map Google, jeśli korzystasz z Geokodera, nie wyświetlając wyników na Mapie Google. –
Z tego co wiem, nie możesz używać google api w systemie wewnętrznym lub z wybranymi odbiorcami. Twoja strona korzystająca z Map powinna być otwarta dla całego internetu - przeczytaj warunki umowy. Good @ B Chris @Chris B –