Code-Beispiel: "Google Maps"-Marker

Die Marker auf der Karte können auch von externen Webservern geladen werden. In der Datenbank existiert eine Tabelle, in der Adressen von beliebig vielen XML-Ressourcen gespeichert werden können. Ein Eintrag in dieser Tabelle sollte immer auch auf eine eigene solche Ressource verweisen (bei mir ist das zum Beispiel http://tobias-reinhardt.de/marker.xml, die Datenbank enthält auch eine Spalte zum Vermerken des "Heimatstatus'"). Die XML-Struktur muss wie folgt aussehen:

<markers> <marker title="Tobias Reinhardt" home="true"> <lat>53.0958610366404</lat> <lng>8.80348954772949</lng> <text>Landshuter Str. 48&lt;br /&gt;28215 Bremen</text> <url>http://tobias-reinhardt.de</url> <image>ich.jpg</image> </marker> <marker title="Fußballwiese" home="false"> <lat>53.1072875398591</lat> <lng>8.83071184158325</lng> <text>Hier wird einmal pro Woche Fußball gespielt.</text> <url /> <image /> </marker> </markers>

Selbstverständlich können innerhalb der <markers>-Umgebung beliebig viele <marker> auftauchen. Das Attribut home gibt an, ob es sich bei dem Marker um den "Heimatmarker" der jeweiligen "Marker-Besitzer" handelt. Das ist für externe XML-Ressourcen relevant, da hier nur genau ein Marker mit home="true" geladen wird (und zwar der erste gefundene, alle nachfolgenden sowie alle Marker mit home="false" werden ignoriert). Das hat zur Folge, dass beliebig viele eigene Marker eingefügt werden können, von fremden Daten aber immer nur der "Heimatmarker" angezeigt wird.

Außerdem habe ich die Datenbank um eine Tabelle erweitert, in der die eigenen Marker analog zu der oben aufgeführten Struktur vorgehalten werden. Beim Aufruf der Kartenseite wird dann zunächst die Tabelle mit den gespeicherten Adressen abgearbeitet. Irgendwann im Zuge dieser Aktion kommt es zur Anforderung der eigenen XML-Ressource an den Webserver. Diese existiert physisch aber nicht in der gewünschten Form, stattdessen handelt es sich um ein PHP-Script, das XML produziert und als solches ausgeliefert wird (die Vorgehensweise ist identisch zu der beim Basteln eines eigenen Newsfeeds). Die Datenbasis für die so generierte XML-Ressource stellt natürlich die eben erwähnte Tabelle dar.

Auf diese Weise können also neben den eigenen Markern auch solche von anderen Seiten in die eigene Karte eingebaut werden, Voraussetzung ist lediglich die korrekte XML-Struktur.

Die XML-Daten werden mittels der DOM/XML-Funktionalität in PHP verarbeitet. Eine gute Anleitung dazu hab' ich bei http://infos24.de gefunden.

Nachtrag: DOM/XML und PHP 5

Da mein Provider nun auf PHP 5 umgestellt hat, mussten einige Änderungen vorgenommen werden. Die oben erwähnte DOM/XML-Funktionalität hat hier keinen Bestand, stattdessen kommen die DOM-Funktionen zum Einsatz. Die Dokumentation gibt es zur Zeit nur in Englisch (es sei denn, ich habe nicht ausreichend gesucht), insgesamt kommt diese noch etwas spartanisch daher. Das wird sich sicher im Laufe der Zeit ändern.

Letzte Änderung: 23. November 2006