1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Google Maps - XML Daten auslesen

Dieses Thema im Forum "Netzwelten" wurde erstellt von mfitzen, 23. Juli 2008.

  1. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Ich beschäftige mich seit 2 Tagen mit Google Maps (API) und konnte trotz fehlender Javascript Kenntnisse (Google sei Dank!) erste Erfolge erzielen. Nach stundenlangem Rumprobieren habe ich es endlich hinbekommen, mittels etwas Javascript eine XML Datei auszulesen und die Daten auf der Karte auszugeben. Diese Daten (Orte) liegen aber leider nur als Koordinaten vor. Hier mal der Code des Scripts und der XML Datei:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Mein Problem: Wie bekomme ich das nun hin, dass wenn in der XML Datei nur Adressen (Name, Straße, PLZ, Ort) eingetragen sind, diese mittels JS in Koordinaten umgewandelt werden und dann auf der Karte erscheinen? So wie ich das verstanden habe, nennt sich das Prozedere "Geocoding"?! Google spuckt dazu ne ganze Menge aus, aus dem ich aber leider nicht schlau werde.

    Hat sich hier schonmal einer damit befasst und könnte mir eventuell unter die Arme greifen?
     
  2. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Japp, Geocoding ist das richtige Schlüsselwort, und dafür hat die API auch das passende Objekt parat: GClientGeocoder

    Angepasst auf dein Script müsste das so aussehen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Rot, das was du nicht mehr brauchst, grün das, was dazu kommt.

    Die XML müsste/könnte dann so aussehen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Hallo Alphawolf!

    Vielen Dank für Deine Antwort. Habe es eben getestet. Nun funktionierts. Vielen Dank nochmal! Die nächsten Schritte werde ich dann erstmal selber versuchen hinzubekommen. Hab ja jetzt schonmal nen guten Ansatz. :D

    Gruß
    infected
     
    #3 mfitzen, 24. Juli 2008
    Zuletzt bearbeitet: 24. Juli 2008
  4. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Auf die Gefahr hin, dass ich mich als "unfähig" oute, aber ich komm nicht weiter. Vielleicht sollte ich doch mal die ein oder andere Stunde Javascript lernen. Was ich versuche ist nun, die Daten (Adressen) aus dem XML noch als Links unterhalb der Map (oder auch auf einer anderen Seite meiner Homepage) ausgeben zu lassen. Bei Klick auf den Link einer Adresse soll die Karte auf den Marker springen und ein InfoWindow anzeigen, indem die Adressdaten nochmal ausgegeben werden. Hört sich kompliziert an (und ist es auch für meine Wenigkeit), aber gibt es dafür eine Lösung?
     
  5. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
  6. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Hallo Alphawolf!

    Genau über diese Beispiele bin ich bei meiner langen Suche auch gestolpert. Habe dann natürlich versucht, die dortigen Funktionen irgendwie in meinem Script unterzubringen (hab dann Variablen etc. entsprechend angepasst). Natürlich ohne Erfolg. Ich scheitere auch schon beim InfoWindowHtml(). Das auf einen einfachen Marker anzuwenden bekomme ich hin, aber für jeden einzelnen Punkt aus der XML Datei nicht.

    Was meinst Du denn mit Umstellen um Funktionsaufrufe zu nutzen?

    Nun gut, ich wollte mich morgen nochmal damit beschäftigen. Dann hab ich auch den Firefox mit Firebug etc. zur Verfügung. Das macht die Fehlersuche dann (etwas) einfacher.
     
  7. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Guten Morgen!

    Nach etlichen Versuchen am Wochenende bin ich leider keinen Schritt weiter gekommen. Sollte jemand Lust und Zeit haben mir zu helfen, wäre ich sehr dankbar. Ansonsten muss ich mein Vorhaben nochmal überdenken...
     
  8. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Also ich habe die Code-Teile mal zwecks Übersicht in jew. eigene Funktionen gepackt, damit man die einzelnen Aufrufe (GeoCoding, InfoFenster öffnen, etc.) jeweils getrennt voneinander aufrufen kann. Der Code sieht nun folgendermaßen aus:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Im DIV 'adressen' werden dann die Adressen aus der XML geschrieben.

    Wichtig ist, dass du den Code innerhalb des <body>-Bereichs schreibst, da ich die "globale" initialize-Funktion (mitsamt onload) entfernt habe, da ich sie ja in einzelne Funktionen aufgesplittet habe, und der JS-Code nicht aufgerufen werden würde, wenn er im <head>-Bereich liegen würde (ohne onload in <body>-Tag).

    Die XML-Datei bleibt unberührt.

    Hoffe, das hilft dir.
     
  9. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Wahnsinn! Das hätte ich alleine niemals hinbekommen. :oops: Aber genau so hatte ich mir das vorgestellt. Vielen vielen Dank! Nichtsdestotrotz werde ich wohl nicht drum herum kommen, mir selbst ein bisschen JS anzueignen, damit ich sowas auch mal alleine lösen kann.

    Ich hatte mir bei Google Maps noch dieses Beispiel angesehen und hab versucht es irgendwie auf mein Problem anzuwenden. Auch daran bin ich gescheitert. Klar, ist das wieder was (total) anderes (mit PHP/SQL), aber das Ergebnis kommt meiner Sache schon sehr nahe. Alles ein bisschen "tricky"...

    Ich werde mir Deinen Code heute Abend nochmal genauer unter die Lupe nehmen. Mal sehen ob ich herausfinden kann, wo ich Fehler gemacht habe, bzw. wie Du genau vorgegangen bist.

    Vielen herzlichen Dank für Deine fantastische Hilfe!
     
  10. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Guten Morgen!

    Hab mir den Code gestern nochmal angeschaut. Hätte da zwei Fragen zu:
    1) Wozu werden diese Zeilen benötigt? Das leuchtet mir nicht ganz ein...
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    2)Was hat es mit dieser Zeile auf sich?
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Warum wird der Variable oben kein Wert zugewiesen und was hat dieses + name + für eine Bedeutung?

    Gruß
    infected
     
  11. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    zu 1.)

    Die Funktkion
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    nutzt die Variable html, um das InfoWindow mit Inhalten zu füllen, in diesem Fall mit der Adresse. Da du aber nur die Adresse dort anzeigen willst, fülle ich die Variable einfach mit der Adresse aus der XML-Datei, also:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wenn du mehr als die Adresse im InfoFenster aneigen lassen willst, kannst du die Variable auch anders füllen. Du könntest die Zeile z.B. anpassen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und deine XML-Datei anpassen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dann würde im InfoWindow der Wert aus html="Irgendein weiterer Text" genommen werden, anstatt die Adresse aus adresse="Berlin", wie bisher.

    Das Label ist der Linktext zu den Links unter der Karte, die per Klick die InfoFenster in der Map öffnen. Auch hier könntest du die XML-Datei erweitern:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und dann den Code anpassen:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dann würden die Links den Wert aus linktext="Klick mich" haben. Also z.B. <a ...>Klick mich</a>...

    zu 2.)

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Da die Funktion in einer Schleife aufgerufen wird, setze ich damit die Adress-Links unter der Map damit zusammen. Bei jedem Schleifendurchlauf wird also ein <a..-Link plus <br/>-Umbruch hinnzugefügt, sodass die Links untereinander stehen.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und damit "suche" ich das Element mit der id "adressen", also das hier:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und schreibe die Links dynamisch rein.

    Sieht jetzt alles etwas viel und unübersichtlich aus, ist es aber nicht. :)
     
    #11 Alphawolf, 29. Juli 2008
    Zuletzt bearbeitet: 29. Juli 2008
  12. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Soweit verstanden. ...zumindest den zweiten Teil. Danke für die Erklärung!

    Zur 1. Sache: Mal angenommen ich würde die XML Datei um ein Attribut "telefon" erweitern wollen. Dann kann ich die for-Schleife doch um diesen Code erweitern, oder verstehe ich das falsch?!
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Um das dann ins Info Window einzubinden, würde ich den dazugehörigen Code in
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ändern.
    Leider hat das gerade bei einem Test nicht funktioniert. Wo ist der Denkfehler? Die Sache mit der Erweiterung der XML Datei ist momentan nicht wirklich nötig, aber für die Zukunft auch nicht ganz uninteressant.
     
  13. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Du hast vermutlich vergessen, die Variable an die Funktionen zu übergeben, also z.B. so:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und dann sowohl in der geoCoding() Funktion als auch in der createMarker() Funktion auch:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  14. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Deine Vermutung war fast richtig ;) Hatte vergessen die Variable in der createMarker Funktion einzutragen. Danke für den Hinweis, ich hätte mich wieder dumm und dämlich gesucht :mrgreen:.

    Vielleicht noch eine abschließende Frage: Die Links, die unter der Map angezeigt werden, variieren in der Reihenfolge. Das heißt sie werden nicht in der Reihenfolge ausgelesen, wie sie in der XML Datei eingetragen sind. Kann man das ändern? Wenn nicht ist das nicht tragisch...
     
  15. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Hmm, das sollten sie eigentlich. :neutral: Die Schleife geht ja vom 0 bis x'ten marker-Tag durch, und zwar von oben nach unten. Muss ich mal testen.
     
  16. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Zumindest kann ich das im IE7 beaobachten. Wenn ich ein paar Mal F5 drücke, dann werden die Links durcheinandergewürfelt. Manchmal sogar beim ersten Aufruf der Seite.
     
  17. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Tja, keine Ahnung, warum der IE das macht. Er nummeriert den Index korrekt durch, also die Link-Ziele lauten openMarker(0), openMarker(1), openMarker(2), etc... nur die Namen würfelt er durch.

    Der Herr Gates hat ja jetzt mehr Zeit. Vielleicht sollte man ihn mal fragen. :-|
     
  18. mfitzen

    mfitzen Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.820
    Zustimmungen:
    2
    Wie gesagt, es ist nicht sonderlich tragisch. Vielen Dank nochmal für Deine riesen Hilfe! Ich werd mit dem momentanen Stand noch ein wenig rumspielen und mich ggf. bei weiteren Fragen nochmal melden.

    Gruß
    infected
     
  19. clerencios

    clerencios Member

    Registriert seit:
    5. September 2007
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo zusammen ...

    Ich habe hierzu noch eine Frage:

    Wie oder wo wird der Ort auf der Karte ermittelt?

    Ich vermute mal hier:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ich möchte nicht nur die Stadt, ich möchte auch gerne die Strasse ermitteln. Wo füge ich das hinzu?

    Ich versuche es seit heute Nacht um 2.50 Uhr -mit kleiner Schlafunterbrechung - und komme nicht drauf.

    Noch eine Frage:

    Warum steht hier auf einmal "adress" ?

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #19 clerencios, 16. April 2009
    Zuletzt bearbeitet: 16. April 2009
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden