[SimpleXML] Google Maps, Problème d'encoding dans une boucle
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:
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 :
Code:
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