Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Depuis peu j'ai un pb avec mon script phoogle pour afficher une carte google map . Tous fonctionner et depuis 1 semaine plus rien .
voila le message d'erreur.
Notice: Use of undefined constant Response - assumed 'Response' in /application/model/PhoogleMap.php on line 146
Fatal error: Cannot use string offset as an array in /application/model/PhoogleMap.php on line 146
Voila le code:
$apiURL = "http://maps.google.com/maps/geo?&output=xml&key=".$this->apiKey."&q="; $addressData = file_get_contents($apiURL.urlencode($address)); // echo $addressData; $results = $this->xml2array(utf8_encode($addressData)); $pointer = count($this->validPoints); echo '<pre>'; print_r($results); ligne 146 $essai=$results['kml'][Response]['Placemark']['Point']['coordinates']; // echo $essai; @$this->validPoints[$pointer]['lat']= $results['kml']['Placemark']['Point']['coordinates']; @$this->validPoints[$pointer]['long']= $results['kml']['Placemark']['Point']['coordinates']; $this->validPoints[$pointer]['passedAddress'] = $address; $this->validPoints[$pointer]['htmlMessage'] = $htmlMessage;
et voila l'affichage de $addressData envoyer a la fonction xml2array.
<kml xmlns="http://earth.google.com/kml/2.0"><Response> <name>24 rue saint malo,bayeux 14400 FR</name> <Status> <code>200</code> <request>geocode</request> </Status> <Placemark id="p1"> <address>24 Rue Saint-Malô, 14400 Bayeux, France</address> <AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>FR</CountryNameCode><CountryName>France</CountryName><AdministrativeArea><AdministrativeAreaName>Basse-Normandie</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Calvados</SubAdministrativeAreaName><Locality><LocalityName>Bayeux</LocalityName><Thoroughfare><ThoroughfareName>24 Rue Saint-Malô</ThoroughfareName></Thoroughfare><PostalCode><PostalCodeNumber>14400</PostalCodeNumber></PostalCode></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails> <Point><coordinates>-0.7048546,49.2777634,0</coordinates></Point> </Placemark> </Response></kml>
L'affichage de $results donne ceci
Array ( [kml] => Array ( [Response] => ) )
voila la fonction xml2array:
function xml2array($xml){ echo $xml; $this->depth=-1; $this->xml_parser = xml_parser_create(); xml_set_object($this->xml_parser, $this); xml_parser_set_option ($this->xml_parser,XML_OPTION_CASE_FOLDING,0);//Don't put tags uppercase xml_set_element_handler($this->xml_parser, "startElement", "endElement"); xml_set_character_data_handler($this->xml_parser,"characterData"); xml_parse($this->xml_parser,$xml,true); xml_parser_free($this->xml_parser); //echo '<pre>'; print_r($this->arrays[0]); return @$this->arrays[0]; }
Merci de votre aide
cordialement
Cédric
Hors ligne
Bonjour,
dans ta ligne :
$essai=$results['kml'][Response]['Placemark']['Point']['coordinates']
t'as un Response sans " autour. PHP considère que c'est une constante (au sens define("Response","toto") et comme ta constante Response n'est pas définie il met une notice et renvoie la chaîne de caractères "Reponse" à la place de la constante.
Je soupçone que comme 2e paramètre, tu voulais mettre autre chose que la chaîne "Response"... (genre t'as oublié un $ ou une erreur du genre à se taper la tête contre un mur...)
A+, Philippe
Hors ligne
alors nom j'ai tester en modifiant le response avec des $ ou " mais il s'agit d'un script phoogle map et il est écrit ainsi , il fonctionner trés bien et la pfff plus rien , en cherchant sur le net un peu suis tombé sur un forum qui dit que google aurez modifier son flux xml ?
http://www.systemsevendesigns.com/phoogle
autre lien http://forum.arfooo.com/topic620.html
Cédric
Dernière modification par lebilien (26-11-2008 15:53:00)
Hors ligne
effectivement en suivant l'aide de l'autre forum sa fonctionne j'avais mal vu la ligne merci
Hors ligne