Dans cette démo de l’Api Google Map, nous allons voir un exemple parmi d’autres de l’utilisation de la classe Geocoder pour récupérer les coordonnées d’un point puis insérer ces dernières dans une base de données.
Pour cette application, un appel AJAX sera nécessaire pour appeler le script PHP chargé de l’insertion des coordonnées de l’adresse en base de données. Il faudra donc penser à créer l’objet XMLHttpRequest ou alors charger un fichier tiers comme la librairie JQuery par exemple.
Source et Explications
SECTION HTML <html> <head> ... ... /* Appel API Google Map et fichier tiers pour appel AJAX */ <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/ jquery.min.js"></script> ... ... </head> <body> /* Formulaire HTML */ <input type="text" id="adresse" value="saisissez votre adresse à géolocaliser" /> <input type="button" onclick="geolocalise()" value="géolocaliser" /> Latitude : <input type="text" id="lat" value="" /> Longitude : <input type="text" id="lng" value="" /> /* Div où s'affichera le retour de l'appel AJAX (non obligatoire) */ <div id="answer">Réponse de l'appel AJAX :</div> ... ... SCRIPT DE L'APPLICATION <script type="text/javascript"> /* Déclaration des variables globales */ var geocoder = new google.maps.Geocoder(); var addr, latitude, longitude; /* Fonction chargée de géolocaliser l'adresse */ function geolocalise(){ /* Récupération du champ "adresse" */ addr = document.getElementById('adresse').value; /* Tentative de géocodage */ geocoder.geocode( { 'address': addr}, function(results, status) { /* Si géolocalisation réussie */ if (status == google.maps.GeocoderStatus.OK) { /* Récupération des coordonnées */ latitude = results[0].geometry.location.lat(); longitude = results[0].geometry.location.lng(); /* Insertion des coordonnées dans les input text */ document.getElementById('lat').value = latitude; document.getElementById('lng').value = longitude; /* Appel AJAX pour insertion en BDD */ var sendAjax = $.ajax({ type: "POST", url: 'insert-in-bdd.php', data: 'lat='+latitude+'&lng='+longitude+'&adr='+addr, success: handleResponse }); } function handleResponse(){ $('#answer').get(0).innerHTML = sendAjax.responseText; } }); } </script> </body> </html> SECTION PHP (fichier insert-in-bdd.php) <?php header('Content-type: text/html; charset=ISO-8859-1'); if(isset($_POST['lat']) && isset($_POST['lng'])){ $lat = addslashes($_POST['lat']); $lng = addslashes($_POST['lng']); $adr = addslashes($_POST['adr']); $db = mysql_connect(SERVER, USER, PASSWORD); $select = mysql_select_db(DATABASE, $db); mysql_query('INSERT INTO ma_table (lat,lng,adresse) VALUES ("'.$lat.'","'.$lng.'","'.$adr.'")'); echo 'Vos coordonnées ont bien été insérées en base de données.'; }else echo 'Problème rencontré dans les valeurs passées en paramètres'; ?>