Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Openlayers<br />
GETten <strong>und</strong> POSTen<br />
Um Webseiten <strong>mit</strong> Parametern zu versorgen,<br />
wurden die Methoden GET <strong>und</strong> POST entwickelt.<br />
Bei der Methode GET werden alle Parameter<br />
an die URL-Zeichenkette nach einem Fragezeichen<br />
angehängt. Getrennt werden die einzelnen<br />
Parameter durch das Ampersand-Zeichen<br />
»&«. So ergibt sich die Schreibweise »http://<br />
url?param_1=wert_1&...¶m_n=wert_n«. In<br />
der korrekten HTML-Notation ersetzt man das<br />
Ampersandzeichen durch »&«, um W3Ckonform<br />
zu bleiben. Die Vorteile dieser Methode<br />
sind, dass sich eine solche URL leichter als Lesezeichen<br />
im Browser speichern lässt <strong>und</strong> man<br />
hat bei der Entwicklung stets einen Überblick,<br />
ob alle Parameter korrekt gesetzt werden. Das<br />
ist aber auch gleichzeitig der Nachteil, da potenzielle<br />
Angreifer sehen, auf welche Art <strong>und</strong><br />
Weise beispielsweise Daten aus einer Datenbank<br />
ausgelesen werden. Zudem beschränkt die Methode<br />
GET die maximale Länge der URL, sodass<br />
nur wenige Parameter nutzbar sind.<br />
Die Methode POST bietet mehr vordergründige<br />
Sicherheit. Die Parameter werden nicht mehr an<br />
die URL angehängt, sondern über einen Datenkanal<br />
(Pipe) an die Webseite über<strong>mit</strong>telt. Da<strong>mit</strong><br />
haben potenzielle Angreifer zumindest etwas<br />
mehr Probleme bei einem Angriff. Ein weiterer<br />
Vorteil ist, dass Anzahl der möglichen Parameter<br />
nahezu unbegrenzt ist. Die POST-Methode hat<br />
den Nachteil, dass es keine Möglichkeit gibt,<br />
eine URL <strong>mit</strong> allen Parametern als Lesezeichen<br />
abzulegen.<br />
Gr<strong>und</strong>sätzlich besteht auch die Möglichkeit,<br />
beide Methoden gleichzeitig zu verwenden. Das<br />
sollte man allerdings vermeiden. Einerseits entspricht<br />
es nicht den Richtlinien der W3C <strong>und</strong><br />
andererseits besteht die Möglichkeit, dass der<br />
Zugriff auf die Daten der POST-Methode nicht<br />
mehr gewährleistet ist.<br />
immer der ausgewählte Kartenausschnitt.<br />
Als Programmierer hat man die Möglichkeit,<br />
<strong>mit</strong> weiteren Layern für den Betrachter<br />
weitere nützliche Informationen<br />
anzubieten.<br />
In den Anfängen von Openlayers gab es<br />
keinen Weg, auf die in einer Datenbank<br />
vorgehaltene Datenbestände zuzugreifen,<br />
da Javascript keine Möglichkeit bietet,<br />
auf Datenbankserver zuzugreifen. Um<br />
eigene POIs darzustellen, werden aber<br />
Datenbanken benötigt.<br />
Alternativ bietet sich immer die Lösung<br />
an, alle POIs im Programmcode anzugeben<br />
beziehungsweise den zugehörigen<br />
Javascript-Code durch ein Perl- oder<br />
PHP-Skript zu erzeugen. Dies bedeutet<br />
aber, dass die Wartung solcher Seiten<br />
sich sehr schwierig gestaltet. Ebenso<br />
würde die Serverbelastung zunehmen<br />
<strong>und</strong> die Performance auf dem Client<br />
enorm abnehmen.<br />
Ein Lösungsweg, die Daten aus einer Datenbank<br />
zu beziehen, wurde in Ausgabe<br />
02/2012 der FreeX beschrieben. Über den<br />
Umweg, dass ein CGI-Skript per Iframe<br />
Zugriff auf externe Datenbestände ermöglicht,<br />
wurden die POIs in der Karte<br />
dargestellt. Die Lösung funktioniert recht<br />
gut, ist aber nicht perfekt. Gerade dann,<br />
wenn es zu Timeouts bei der Verbindung<br />
kommt, besteht die Möglichkeit, dass<br />
Daten falsch oder gar nicht dargestellt<br />
werden. Inzwischen hat sich diesbezüglich<br />
in der Entwicklung der Javascript-<br />
Bibliothek Openlayers einiges getan. Sie<br />
bietet <strong>mit</strong>tlerweile sehr viele Wege, um<br />
auf externe Daten zuzugreifen.<br />
Openlayers bietet zwei Objekte, die den<br />
Zugriff auf externe Daten erleichtern.<br />
Sie erlauben es, <strong>mit</strong>hilfe der HTTP-Methoden<br />
GET <strong>und</strong> POST externe Seiten<br />
inklusive Parameterübergabe aufzurufen<br />
(siehe Kasten „GETten <strong>und</strong> POSTen“).<br />
Für die beiden HTTP-Methoden gibt es<br />
die Objekte »OpenLayers.Request.GET«<br />
<strong>und</strong> »OpenLayers.Request.POST«. Sie rufen<br />
eine externe Webseite auf, die durch<br />
ein CGI-Skript generiert wird. Das Skript<br />
wertet die von den Objekten über<strong>mit</strong>telten<br />
Parameter aus <strong>und</strong> generiert hieraus<br />
eine passende Datenbankabfrage.<br />
Das Ergebnis der Abfrage ist eine Datei<br />
im Plain-Text-Format, die ohne HTML-<br />
Notationen auskommt. Man sollte dieses<br />
Format wählen, weil es die weitere Verarbeitung<br />
erheblich vereinfacht.<br />
Die so generierte Seite wird an den Webbrowser<br />
zurückgesendet, wo die Callback-<br />
Funktion von »OpenLayers.Request.GET«<br />
beziehungsweise »OpenLayers.Request.<br />
POST« die Informationen verarbeitet.<br />
Die Callback-Funktion läuft erst dann ab,<br />
wenn die Webseite fertig generiert ist.<br />
Das gilt übrigens auch für den Fehlerfall,<br />
den man deshalb sinnvollerweise gesondert<br />
berücksichtigen sollte. Abbildung 2<br />
verdeutlicht den Ablauf.<br />
Datenbank <strong>mit</strong> Strategie<br />
Die beiden eben beschriebenen Objekte<br />
eignen sich sehr gut, um POIs schnell<br />
<strong>und</strong> einfach darzustellen. Ein Nachteil<br />
ist allerdings, dass es sehr aufwendig ist,<br />
eine vom Kartenausschnitt abhängige<br />
Anzahl von Punkten darzustellen.<br />
Aber auch hier bietet Openlayers inzwischen<br />
Abhilfe: »OpenLayers.Strategy.<br />
BBOX« <strong>mit</strong> »OpenLayers.Protocol.HTTP«<br />
<strong>und</strong> »OpenLayers.Layer.Vector« bilden<br />
ein unschlagbares Team zur Darstellung<br />
Abbildung 1: Die Darstellung zeigt Wetterstationen auf dem Gebiet der USA. Die geografischen Positionen<br />
wurden einer Datenbank entnommen, in der circa 20 000 Stationen gespeichert sind.<br />
www.admin-magazin.de<br />
Admin<br />
Ausgabe 06-2012<br />
107