Hola. Tengo una web inmobiliaria y le asigno zona por geolocalización a cada inmueble automáticamente en función del código postal. Sin embargo quiero que en el formulario de datos del inmueble haya un apartado en el que se pueda concretar manualmente el punto exacto de la localización del inmueble.
Es decir, que no sea necesario poner la dirección si uno no quiere, y que directamente pinchando o moviendo el mapa pueda obtener las coordenadas y grabarlas, para posteiormente grabarlas en la base de datos.
El problema es que quiero mandar las coordenadas mediante POST o GET a la siguiente página a través de un SUBMIT y no puedo. Lo he intentado con ONCLICK e incluso con distintas maneras en javascript pero no me aclaro.
Podéis ver lo que digo aquí [URL="http://www.pisoscadiz.info/zgeolocalizador.php"]http://www.pisoscadiz.info/zgeolocalizador.php[/URL]
Si se activa la línea que lleva el onsubmit... pasa esto: [URL="http://www.pisoscadiz.info/zgeolocalizador1.php"]http://www.pisoscadiz.info/zgeolocalizador1.php[/URL]
Ayuda por favor.
El script es este:
<body>
<!-- servidor -->
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true&key=ABQI AAAAynhTMdjKYP0qmFLv2ynwYhS7JkZAZIEhGzPm07QkjMQWjd z2jxRCSWsHtvYhgJBEebN3LpSh1CpWVg" 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(36.5296879,-6.2926569), 15);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
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:<b r></b>Latitud : "+point.y+"<br>Longitud : "+point.x+"<a href=http://www.mundivideo.com/fotos_pano.htm?lat="+point.y+"&lon="+point.x+"&map a=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, valor) {
if (geocoder) {
geocoder.getLatLng(address,
function(point) {
if (!point) {
alert(address + " not found");
} 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+"&map a=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>
</head>
<body onLoad="load();" onunload="GUnload();">
<h1 style="border: 1px solid #CCC;background-color: #EEE;color: #999; width:450px; font-family: verdana; font-size:9px">OBTENER COORDENADAS DE UN PUNTO EN GOOGLE MAPS</h1>
<form name="form_mapa" method="GET" enctype="multipart/form-data">
<!-- <form name="form_mapa" method="GET" onsubmit="showAddress(this.address.value, this.zoom.value=parseFloat(this.zoom.value)); return false" enctype="multipart/form-data"> -->
<p style="font-size: 10px;font-family: verdana;font-weight: bold;">Dirección a buscar:
<input type="text" name="address" value="" style="width: 320px;font-size: 10px;font-family: verdana;font-weight: bold;" />
<input type="hidden" size="1" name="zoom" value=15 />
<input type="submit" onclick = "showAddress(this.address.value, this.zoom.value=parseFloat(this.zoom.value)); return false" value="Ver" />
</p>
<p style="font-size: 10px;font-family: verdana;font-weight: bold;">Coordenadas:
<input type="text" name="coordenadas" value="" style="width: 350px;font-size: 10px;font-family: verdana;font-weight: bold;" />
<input type="submit" name="coordenadas2" onclick = "this.form.action = 'http://www.pisoscadiz.info/zrecoge.php'" value="Grabar" />
</p>
</form>
<br />
<div style="width: 450px; border-width: 1px; border-style: solid; border-color: #979797; padding:8px 8px 8px 8px;">
<div id="map" style="width: 450px; height: 300px"></div>
</div>
<form name="form_mapa_1" action="#" onclick=" showAddress(this.address.value, 15); return false"> </form>
</body>
Y recojo la variable en zrecoge.php
<?php
$muestra=$_GET[coordenadas];
echo $muestra;
?>
La clave está en estas dos líneas:
<form name="form_mapa" method="GET" enctype="multipart/form-data">
<!-- <form name="form_mapa" method="GET" onsubmit="showAddress(this.address.value, this.zoom.value=parseFloat(this.zoom.value)); return false" enctype="multipart/form-data"> -->
Si activo una y desactivo otra me funcionan bien, pero no consigo poder obtener las coordenadas escribiendo la dirección, pinchando en el mapa, y que cuando esté sobre el sitio adecuado se me graben al darle al botón de bragar.
Ayuda por favor. Gracias