Yo he encontrado un script bastante bueno y lo modifiqué a mi gusto, te pongo mi codigo y de ahi sacas conclusiones :P
Primero el javascript
:
Esta funcion se encarga de copiar la dirección completa de tres campos: provincia, ciudad, calle en otro campo input
Código PHP:
<script type="text/javascript">
function copiar(frm) {
frm.address.value = frm.provinciaList.value+' '+frm.localidadList.value+' '+frm.t3.value;
}
</script>
Aquí el script de googlemaps (cambia las keys):
Código PHP:
<!-- localhost -->
<!-- <script src="http://maps.google.com/maps?file=api&v=2&sensor=true
&key=ABQIAAAAlnCuVAz3joudtuBZyyjeGBQ7dS0Aaw1_Q1fdUKG1GXi9hqLEUhTsO6DjXuhO2pK4n6nDQ_d5DrVN_Q"
type="text/javascript"></script> -->
<!-- servidor -->
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true
&key=ABQIAAAAlnCuVAz3joudtuBZyyjeGBQ7dS0Aaw1_Q1fdUKG1GXi9hqLEUhTsO6DjXuhO2pK4n6nDQ_d5DrVN_Q"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
// Inicialización de variables.
var map = null;
var geocoder = null;
function load() { // Abre LLAVE 1.
if (GBrowserIsCompatible()) { // Abre LLAVE 2.
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(40.229218,-4.240723), 5);
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GScaleControl());
geocoder = new GClientGeocoder();
//---------------------------------//
// MARCADOR AL HACER CLICK
//---------------------------------//
GEvent.addListener(map, "click",
function(marker, point) {
if (marker) {
null;
} else {
map.clearOverlays();
var marcador = new GMarker(point);
map.addOverlay(marcador);
//marcador.openInfoWindowHtml("<b><br>Coordenadas:<br></b>Latitud : "+point.y+"<br>Longitud : "+point.x+"<a href=http://www.mundivideo.com/fotos_pano.htm?lat="+point.y+"&lon="+point.x+"&mapa=3 TARGET=fijo><br><br>Fotografias</a>");
//marcador.openInfoWindowHtml("<b>Coordenadas:</b> "+point.y+","+point.x);
document.form_mapa.coordenadas.value = point.y+","+point.x;
}
}
);
//---------------------------------//
// FIN MARCADOR AL HACER CLICK
//---------------------------------//
} // Cierra LLAVE 1.
} // Cierra LLAVE 2.
//---------------------------------//
// GEOCODER
//---------------------------------//
function showAddress(address, zoom) {
if (geocoder) {
geocoder.getLatLng(address,
function(point) {
if (!point) {
alert(address + " no se ha encontrado, si esta dirección existe y no aparece en el mapa situa manualmente el punto en el mapa haciendo click donde este la ubicación dejando los campos del formulario correctamente");
} else {
map.setCenter(point, zoom);
var marker = new GMarker(point);
map.addOverlay(marker);
//marker.openInfoWindowHtml("<b>"+address+"</b><br>Coordenadas:<br>Latitud : "+point.y+"<br>Longitud : "+point.x+"<a href=http://www.mundivideo.com/fotos_pano.htm?lat="+point.y+"&lon="+point.x+"&mapa=3 TARGET=fijo><br><br>Fotografias</a>");
// marker.openInfoWindowHtml("<b>Coordenadas:</b> "+point.y+","+point.x);
document.form_mapa.coordenadas.value = point.y+","+point.x;
}
}
);
}}
//---------------------------------//
// FIN DE GEOCODER
//---------------------------------//
//]]>
</script>
<script type="text/javascript" src="http://www.diariothc.com/wp-content/codes/animatedcollapse.js"></script>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true
&key=ABQIAAAAlnCuVAz3joudtuBZyyjeGBQ7dS0Aaw1_Q1fdUKG1GXi9hqLEUhTsO6DjXuhO2pK4n6nDQ_d5DrVN_Q"
type="text/javascript"></script>
Y el codigo del body (recuerda <body onLoad="load();" onunload="GUnload();">) con los formularios:
Código PHP:
//abrimos form:
<body onLoad="load();" onunload="GUnload();">
<form name="form_mapa" action="#" onsubmit=" showAddress(this.address.value, this.zoom.value=parseFloat(this.zoom.value)); return false">
// provincia
<select name="provinciaList" id="provinciaList" onChange="return provinciaListOnChange()" onclick="copiar(this.form)" />
<option >Seleccione una provincia...</option>
<option >Provincias...</option>
</select>
//localidades
<select name="localidadList" id="localidadList" onclick="copiar(this.form)" />
<option >Seleccione una localidad...</option>
<option >localidades...</option>
</td>
</select>
//calle
<input id="t3" type=text name="t3" onkeyup="copiar(this.form)" />
//boton de situar en mapa una vez introducidos los datos:
<input class="situar" type="submit" value="Situar en mapa" />
//input que muestra la dirección completa que se ha escrito en los tres formularios de antes y con el primer script se han trasladado a este formulario:
<input type="hidden" name="address" />
<input type="hidden" size="1" name="zoom" value=15 />
//aqui se muetran las coordenadas una vez que se le da al boton de "situar en mapa":
<input type="text" id="coordenadas" name="coordenadas" value="" style="width: 400px;font-size: 10px;font-family: verdana;font-weight: bold;" />
//div del mapa:
<div id="map" style="width: 432px; height: 300px"></div>
//cerramos form:
</form>
</body>
Solo te queda coger con ajax el campo input coordenadas del primer formulario y mandarlo por ejemplo con post a otra pagina para que se guarden en la base de datos, espero que te sirva, saludos!!