Предлагаю вам заглянуть в раздел геокодеров API Карт Google V3. Я только что прошел этот вопрос сам. При построении вашей формы включите скрытые входные данные для lat и long (какими бы ни были ваши имена полей в вашей базе данных), например:
<input type="hidden" name="data[Location][lat]" id="LocationLat"/>
<input type="hidden" name="data[Location][lon]" id="LocationLon"/>
В поле ввода адреса вы скажете что-то вроде этого:
<input name="data[Location][address]" onChange="getLatLong(address)" size="50" maxlength="255" type="text"/>
, где вы включаете вызов функции JavaScript, называемой getLatLong ().
Ниже приведен пример функции:
<script type="text/javascript" >
var geocoder;
var add = document.getElementById("LocationAddress");
function getLatLong(address){
geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address':address},function(results, status){
if (status == google.maps.GeocoderStatus.OK) {
document.getElementById("LocationLat").value=results[0].geometry.location.lat();
document.getElementById("LocationLon").value=results[0].geometry.location.lng();
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
</script>
Возможно, вам придется немного поиграть с этим. Обязательно выполните поиск геокодера Google здесь, на SO, так как я нашел свое решение по частям, которые я получил прямо с этого сайта.