probleme pour récuperer latitude/longitude d'une adresse

Nouveau WRInaute
bonjour,
je cherche à récuperer la latitude et longitude d'une adresse rentrée par un utilisateur dans un formulaire.
pour cela j'utilise le geocoder de google map.
le geocoder calcule bien les coordonnées (si je fais un alert dans le script, il me les affiche) en revanche je n'arrive pas a stocker ces coordonnées dans une variables php, ou dans une base de données, ce qui est mon but.

mon code se décompose en 2 pages :
sur la premiere page (index.php) , on fournit une adresse (exemple : 75010, france). la fonction showadress calcule les coordonnées (latitude, longitude) et renvoie la valeur, qu'on transmet sur la page suivante (afficher.php) dans une variable php qu'on affiche

code de index.php :
Code:
<head>
<title>Application Google Map</title>
<script src="http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAal_cd43vOKPQhNkPDkwHgBQSXE4ITa1YzwIbIoQt-CisjCLm8xTJhtTXHvXoMcij_eu3bNbEGnk_PA" type="text/javascript"></script>
<style type="text/css">
 
</style>
</head>
<body style="margin: 0px; padding: 0px;">
 
<form action="afficher.php" method="post" onsubmit="document.getElementById('latLngStr').value=showAddress(address_rech.value);">
<input type="text" id="address_rech" name="address_rech" value="" >
<input type=hidden id="latLngStr" name='latLngStr'>
<input type="submit" id="submit" value="Localiser" />
</form>
 
<div id="map" style="width: 400px; height: 300px"></div>
 
<script type="text/javascript">
  
    var geocoder = new GClientGeocoder();
	
   function showAddress(address) {
 
        if (geocoder) {
            geocoder.getLatLng(address, function(point) {
                if (!point) { /* Si les coordonnées n'ont pas été trouvés */
                    alert("Impossible de localiser l'adresse :\n\n" + address);
                } else {
		var retour= '(' + point.y + ', ' + point.x + ')';
	                return retour;
                }
            });
        }
 
    }
 
</script> 
</body>
</html>

code de afficher.php

Code:
<html>
<body>
<?php 
 
if(isset($_POST['latLngStr']))
{
        $calcul=$_POST['latLngStr'];
}
else
{
        $calcul="pas de valeur";
}
 
echo "$calcul<br>";
 
?>
</body>
</html>



le probleme c'est que la fonction showadress renvoie la valeur "undefined" ;
pourtant, si je met alert (retour) au lieu de return (retour) dans la fonction, j'ai bien une alerte javascript avec les coordonnées souhaitées...
alors ou est le pb? ca fait plus de 3 jours que je m'arrache les cheveux la dessus..
Merci pour votre aide
 
WRInaute passionné
Dans showaddress, remplace :
return retour;
par :
latLngStr.value=retour;

Ca doit suffit non ?
 
Nouveau WRInaute
j'ai essayé ce que tu m'as dit, en mettant également dans le formulaire
onsubmit="showAddress(address_rech.value);"
mais sur la page afficher.php il n'affiche aucune valeur..
 
WRInaute passionné
arnogef a dit:
j'ai essayé ce que tu m'as dit, en mettant également dans le formulaire
onsubmit="showAddress(address_rech.value);"
mais sur la page afficher.php il n'affiche aucune valeur..

Ben oui, mais comme tu fais, ta page afficher.php est chargée avant même que google t'envoi la position recherchée.
Faut donc faire autrement : mettre un bouton qui appel google, puis quand la valeur arrive, faire comme je t'ai dit et faire le formulaire.submit dans le code.
 
Nouveau WRInaute
je comprend le principe mais je ne vois pas bien comment faire (je suis débutant..).
peux tu m'expliquer un peu plus en détail stp?
 
Discussions similaires
Haut