Bonjour à tous,

Je tente d'intégrer à mon site d'immobilier des cartes Google Maps.

Avant de pouvoir intégrer ces éléments, je dois récupérer les coordonnées latitude et longitude par une requête http auprès de Google.

Pour cela, je me base sur le tuto suivant http://www.developer.com/db/article.php/10920_3621981_2

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
<?php header ('Content-Type: text/html; charset=utf-8;');
 
	//Connexion a la base de donnees
 
	 $connexion = mysql_connect(HOST,USER,PASSWORD)
    or die ("Connexion au serveur impossible");
   $db=mysql_select_db(DATABASE,$connexion)
    or die ("S&eacute;lection de base de donn&eacute;es impossible");
 
   // Query the table
   $query = "SELECT idproduit, adresse, Ville, code_postal FROM immobilier WHERE idproduit=4559383";
   $result = mysql_query($query) or die(mysql_error());
 
 
   // Your Google Maps API key
   $key = "ABQIAAAAQRYU3XY6ckBbvEFxLG8M3RROpmEb267vUFb_KIzNC5a4iS4IlhSHKWVfRGG-mzuPYLzPf1oGofKiMA";
 
   // Loop through each row, submit HTTP request, output coordinates
   while (list($idproduit, $adresse, $Ville, $code_postal) = mysql_fetch_row($result))
   {
 
		  // Desired address
	  	$mapaddress = urlencode("$adresse $code_postal $Ville France");
 
      // Desired address
      $url = "http://maps.google.com/maps/geo?q=$mapaddress&output=xml&key=$key";
 
 
      // Retrieve the URL contents
      $page = file_get_contents($url);
 
      // Parse the returned XML file
      $xml = new SimpleXMLElement($page);
 
      // Parse the coordinate string
      list($longitude, $latitude, $altitude) = explode(",", $xml->Response->Placemark->Point->coordinates);
 
      // Output the coordinates
      echo "latitude: $latitude, longitude: $longitude <br />";
 
   }
?>

Ce code ne fonctionne pas et me renvoie le message d'erreur suivant :


Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE8 0x73 0x2C 0x20 in /home/immobiliD/www/test-google-map.php5 on line 32

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: 00</code><request>geocode</request></Status><Placemark><address>Avenue Jean Jaur in /home/immobiliD/www/test-google-map.php5 on line 32

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ^ in /home/immobiliD/www/test-google-map.php5 on line 32

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/immobiliD/www/test-google-map.php5:32 Stack trace: #0 /home/immobiliD/www/test-google-map.php5(32): SimpleXMLElement->__construct('<?xml version="...') #1 {main} thrown in /home/immobiliD/www/test-google-map.php5 on line 32

----------------

Impossible de trouver la solution. J'ai l'impression qu'il y a un problème avec le loop car si je requête directement avec le code suivant cela fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php
 
   // Your Google Maps API key
   $key = "YOUR_KEY_HERE";
 
   // Desired address
   $address = "http://maps.google.com/maps/geo?q=411+Woody+Hayes+Drive,+Columbus,+OH&output=xml&key=$key";
 
   // Retrieve the URL contents
   $page = file_get_contents($address);
 
   // Parse the returned XML file
   $xml = new SimpleXMLElement($page);
 
// Parse the coordinate string
list($longitude, $latitude, $altitude) = explode(",", 
     $xml->Response->Placemark->Point->coordinates);
 
// Output the coordinates
echo "Longitude: $longitude, Latitude: $latitude";
Si vous avez une piste, Merci d'avance.

Yahn