google maps

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

  • #2
    Re: google maps

    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 ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        Speichere dein XML mit einem Editor in UTF-8 kodiert ab.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Das xml bekomme ich von google

          Kommentar


          • #6
            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 ...?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


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

              Kommentar


              • #8
                Problem so nicht nachvollziehbar, sorry.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


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

                  Kommentar


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

                    Kommentar


                    • #11
                      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!

                      Kommentar


                      • #12
                        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>
                        Zuletzt geändert von Borstilein; 28.06.2007, 11:16.

                        Kommentar


                        • #13
                          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.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            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

                            Kommentar


                            • #15
                              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.)
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X