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élection de base de donné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 :
Si vous avez une piste, Merci d'avance.
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";
Yahn
Partager