PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   XML (https://www.php-resource.de/forum/xml/)
-   -   google maps (https://www.php-resource.de/forum/xml/85074-google-maps.html)

Borstilein 27-06-2007 14:36

google maps
 
Hi,

ich versuche mittels maps.google.com zu adressen aus meiner datenbank die dazugehörigen koordinaten zu ermitteln. Das funktioniert auch soweit, solange ich keine Sonderzeichen wie z.B ü,ä,ß verwende. Dann bekomme ich folgenden Fehler

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\htdocs\umkreissuche\googletest.php:12 Stack trace: #0 C:\htdocs\umkreissuche\googletest.php(12): SimpleXMLElement->__construct('<?xml version="...') #1 {main} thrown in C:\htdocs\umkreissuche\googletest.php on line 12

Hier ist der dazugehörige code:

$adress = array($street, $post, $city);
// Searchstring erstellen
$searchFor = implode ('+', $adress);
// Url für google maps Abfrage zusammensetzen
$key = "ABQIAAAAvTxQJ8ofNxPjKQjP5sMvlRQAWm7Akpi9GkyeD5RywzKP8hv10BQ9wPjSO9ptUs7bZ93Gxf2St9eZiQ";
$url = "http://maps.google.com/maps/geo?q=";
$url .= $searchFor;
$url .= "&output=xml&key=$key";
// Abfrage starten
$page = file_get_contents($url);
echo $page;
// Auslesen der Koordinaten von google maps
$xml = new SimpleXMLElement($page); // FEHLER MIT UTF-8 BEI UMLAUTEN WIE ü
$test = $xml->Response->Placemark->Point->coordinates;

Ich hoffe jemand kann mir helfen.
Vielen Dank

Torsten

wahsaga 27-06-2007 15:15

Re: google maps
 
Zitat:

Original geschrieben von Borstilein
$xml = new SimpleXMLElement($page); // FEHLER MIT UTF-8 BEI UMLAUTEN WIE ü
Dann verwendest du vermutlich kein UTF-8, sondern bildest dir nur ein, es zu tun ...

Borstilein 27-06-2007 15:54

Wie kann ich denn überprüfen, ob ich wirklich UTF-8 verwenden, bzw. wie kann ich sicher stellen, dass ich es verwende? bin Anfänger auf diesen Gebiet, sorry.

wahsaga 27-06-2007 16:31

Speichere dein XML mit einem Editor in UTF-8 kodiert ab.

Borstilein 27-06-2007 16:38

Das xml bekomme ich von google

wahsaga 27-06-2007 16:42

Zitat:

Original geschrieben von Borstilein
Das xml bekomme ich von google
Dann verstehe ich nicht, wo dein Problem liegt - Google liefert doch in UTF-8 kodierte Daten ...?

Borstilein 27-06-2007 16:51

ja richtig. Dennoch tritt bei der Funktion SimpleXMLElement ein Fehler auf, und zwar nur bei Daten mit ü,ä,ß...

wahsaga 27-06-2007 17:01

Problem so nicht nachvollziehbar, sorry.

penizillin 27-06-2007 19:07

versuche $page explizit nach utf-8 zu kodieren, bevor du es an den konstruktor übergibst.

Borstilein 28-06-2007 09:51

Hab es mit $page = utf8_encode($page); probiert. Der Fehler tritt jetzt nicht mehr auf, jedoch ist nun $test leer

onemorenerd 28-06-2007 10:23

Oben wurde gesagt, Google liefert UTF-8. Wenn das stimmt, zerstörst du mit deinem erneuten utf8_encode() den String.

Lass dir $page zur Kontrolle mal ausgeben!

Borstilein 28-06-2007 10:56

das sieht beides mal gleicht aus, habe jetzt herausgefunden, dass $page = file_get_contents($url); schon nicht alles von der url einliest.

Auf der seite zu der url steht :
<kml>

<Response>
<name>Hauptstraße 10 91743 Unterschwaningen</name>

<Status>
<code>200</code>
<request>geocode</request>
</Status>

<Placemark id="p1">
<address>Hauptstraße 10, 91743 Unterschwaningen, Germany</address>

<AddressDetails Accuracy="8">

<Country>
<CountryNameCode>DE</CountryNameCode>

<AdministrativeArea>
<AdministrativeAreaName>Bayern</AdministrativeAreaName>

<SubAdministrativeArea>
<SubAdministrativeAreaName>Ansbach</SubAdministrativeAreaName>

<Locality>
<LocalityName>Unterschwaningen</LocalityName>

<Thoroughfare>
<ThoroughfareName>Hauptstraße 10</ThoroughfareName>
</Thoroughfare>

<PostalCode>
<PostalCodeNumber>91743</PostalCodeNumber>
</PostalCode>
</Locality>
</SubAdministrativeArea>
</AdministrativeArea>
</Country>
</AddressDetails>

<Point>
<coordinates>10.619770,49.081530,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>

und nach dem Auslesen steht in $page:

<kml>

<Response>
<name>Hauptstraße 10 91743 Unterschwaningen</name>

<Status>
<code>200</code>
<request>geocode</request>
</Status>
</Response>
</kml>

wahsaga 28-06-2007 11:11

Re: google maps
 
Ich vermute mal, deine Inhalte von $adress sind nicht UTF-8 kodiert.

Wenn ich mir die Request-Adresse mal selber zusammenbastle, liefert mir Google für den Request-Parameter ?q=düsseldorf&... im Ergebnis-XML ein Element <name>düsseldorf</name> zurück.
Wenn ich stattdessen ?q=düsseldorf&... verwende, liefert es mir analog <name>düsseldorf</name> zurück ...

Google geht also davon aus, dass die Daten die du lieferst, in UTF-8 kodiert sind - darf es ja wohl auch, wenn du sonst keinerlei Angabe bzgl. Content-Encoding machst - und konvertiert sie deshalb selber nicht mehr; liefert dir also im Ergebnis genau das zurück, was du übergeben hast.
Wenn du jetzt aber kein UTF-8 übergeben hast, bekommst du an der Stelle auch kein UTF-8 zurück - und bei nicht als UTF-8 interpretierbaren Zeichen kracht's dann halt beim Erstellen des SimpleXML-Objektes.

Also: Mal prüfen, ob die Daten in $adress wirklich in UTF-8 vorliegen - und wenn nicht, dafür sorgen.

Borstilein 28-06-2007 11:24

google gibts mir richtig zurück, mein Problem ist, dass ich wie oben ergänzt bei xml die ü,ä... enthalten nicht den kompletten string in $page eingelesen bekomme. Sorry, hatte auch erst vorhin bemerkt, dass es nicht an google liegt

wahsaga 28-06-2007 11:51

Kannst du mal ein Beispiel geben, welche Suchdaten du in die Adresse einfügst, bzw. wie diese Adresse dann aussieht? (Nimm bitte gleich die Originaldaten, die du für das "Unterschwaningen"-Beispiel oben verwendet hast.)

Also
http://maps.google.com/maps/geo?q=was_steht_hier&output=xml&key=***


(Und bitte die Option "URLs automatisch umwandeln" beim Posten abschalten, damit die Forensoftware daran nichts verfälscht.)


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:22 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG