Après pas mal de recherche, ceci a l’air de fonctionner :
(dans php.ini , valider : extension=php_curl.dll )
( je conseille le livre “PHP clés en main” , éditions PEARSON , 218 pages; pour la maudite somme de 13 euros )
<?php
// [maps.google.com...](http://maps.google.com/maps/geo?q=5) place Sacre Coeur 12000 RODEZ&output=xml&oe=utf8&gl=fr&sensor=false&key=ABQIAAAAkmj2n9u-yh0eajXY2ODfvRTZ-8DaNmJqQ4DZiHMEn4zyFwB_uRS5k_pWD1NMCv_ztgTVW2VD6fFXLA
function recup_page($url, $post_parameters = null)
{
$query_string = null;
if (!is_null($post_parameters))
{
if (!is_array($post_parameters))
{
die("POST parameters not in array format");
}
/* build query string */
$query_string = http_build_query($post_parameters);
}
$ch = curl_init(); // descripteur de connexion
if ( $query_string )
{ // options de connexion
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$return_data = curl_exec($ch);
curl_close($ch);
return $return_data;
}
function get_coordonees_from_adresse($adresse)
{
// $adresse = "5 place Sacre Coeur 12000 RODEZ" ;
$googlekey = "ABQIAAAAkmj2n9u-yh0eajXY2ODfvRTZ-8DaNmJqQ4DZiHMEn4zyFwB_uRS5k_pWD1NMCv_ztgTVW2VD6fFXLA";
$url = "http://maps.google.com/maps/geo?q=$adresse&output=xml&oe=utf8&gl=fr&sensor=false&key=$googlekey";
// $url = htmlentities ( urlencode($url) ); // protection, sécurité
// $url = htmlentities ( $url );
//$url = urlencode($url) ; // protection, sécurité
$qs = http_build_query( array(
"key" => $googlekey ,
"q" => $adresse ,
"output" => "xml" ,
"oe" => "utf8" ,
"gl" => "fr" ,
"sensor" => "false" ,
));
$url2 = "http://maps.google.com/maps/geo?$qs" ;
$page = recup_page( $url2 );
//$page = utf8_encode( $page ) ;
$adresses = array();
$page = file_get_contents( $url2 );
//$page = file_get_contents( $page );
// Parse le résultat XML
$page = simplexml_load_string( $page ) ;
//$page = simplexml_load_file( "geoRODEZ.xml" ) ;
$page = $page->asXML() ;
$xml_result = new SimpleXMLElement( $page );
//$xml_result = $xml_result ->asXML() ;
//print( $page) ;
// Vérifie que la requête a réussi
if ( $xml_result->Response->Status->code != 200 )
return array();
// Charge les adresses
$adresses = array();
foreach ( $xml_result->Response->Placemark as $place)
{
list($longitude, $latitude, $altitude) = explode(',', $place->Point->coordinates);
// Ajoute au tableau
$adresses[] = array('adresse_complete' => utf8_decode($place->address),
'latitude' => $latitude,
'longitude' => $longitude);
}
return $adresses;
}
$adress = utf8_encode( "place Sacré Coeur 12000 RODEZ" ) ;
$adress = "place 12000 RODEZ" ; // plusieurs réponses!!
$adress = "5 place Sacre Coeur 12000 RODEZ";
$adress = "bvd Saint-Quentin 80000 AMIENS";
$adress = "70 bvd Saint-Quentin 80000 AMIENS"; // adresse du lycée ED. Branly à Amiens
$res = get_coordonees_from_adresse( $adress ) ;
print_r( $res ) ; // affichage récursif
//var_dump( $res ) ; // affichage récursif
echo "
\n";
while (list ($key, $val) = each ( $res))
echo "$key => $val
\n";
$count = count( $res );
echo "$count
\n";
for( $i =0 ; $i < $count ; $i++ )
{
if( is_array( $res[$i] ) )
{
$count2 = count( $res[$i] );
$tab = $res[$i] ;
for( $j =0 ; $j < $count2 ; $j++ )
{
echo key($tab) . " = ". $tab[key($tab)] . "
\n" ; // 'adresse_complete' ] ;
next( $tab ) ;
}
}
else
echo $res[$i] . "
\n" ; // 'adresse_complete' ] ;
}
//$url = 'http://maps.google.com/maps/geo?q=$adresse&output=xml&oe=utf8&gl=fr&sensor=false&key=&googlekey';
//$url = urlencode($url);
?>