Ja, was Sie erreichen möchten, ist möglich, obwohl eine synchrone Anforderung nicht benötigt wird.
Blick auf diesen Code
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();
});
});
So befestigen einreichen Handler Form, wenn es eingereicht wird tun, um die Anfrage geo auf die Adresse Informationen aus Ihrem Formular basiert. Aber zur gleichen Zeit das Einreichen zurückstellen, indem Sie im Handler falsch zurückgeben. Der Antwort-Handler wird 2 versteckte Textfelder 'lat' und 'long' machen und die Antwort speichern. Schließlich wird das Formular vom Clientskript übergeben, einschließlich der zwei neuen Felder. Auf der Serverseite können Sie sie in der DB speichern.
!! Beachten Sie, dass dies möglich ist, aber wahrscheinlich gegen die Google-Begriffe, wie oben erwähnt.
Ich habe ein Formular, das eine Adresse enthält. Als Teil der Validierung der Formulardaten dachte ich daran, einen Google-Geocoder zu verwenden, um die Adresse zu überprüfen. Ich brauche auch die Breiten- und Längengrade, um sie in meine Datenbank einzugeben. Ich weiß, dass ich das mit der Callback-Funktion machen kann, aber das scheint ein Hack zu sein und wäre komplizierter. – giroy
Der Geocoder ist ausschließlich für die Verwendung mit der Callback-Funktion vorgesehen. Mach dir keine Sorgen, es ist kein Hack. :) Es ist wirklich deine einzige Option. Beachten Sie jedoch, dass Sie die Nutzungsbedingungen von Google Maps brechen, wenn Sie den Geocodierer verwenden, ohne die Ergebnisse auf einer Google-Karte anzuzeigen. –
Soweit ich weiß, können Sie die Google API nicht in einem internen System oder mit einer ausgewählten Zielgruppe verwenden. Ihre Seite, die die Karten verwendet, sollte für das gesamte Internet geöffnet sein - lesen Sie die Vertragsbedingungen. Gut @B Chris @Chris B –