Hauptmenü
In einer Redaxo-Instanz fungiert Geolocation als Abruf-Proxy-Srver für Kartenausschnitte vom Server des Anbieters mit gleichzeitiger Möglichkeit, die abgerufenen Kartenausschnitte (Kacheln) zwischenzuspeichern (Cache).
Die Leaflet-Karten bestehen aus Kartenkacheln (Tiles), die von einem entsprechenden Server bereitgestellt werden. Anbieter sind z.B. OpenStreetMap, Google, Apple oder Here. Details zum Erfassen und Verwalten sind in der Anleitung zur Verwaltung der Karten zu finden.
In der REDAXO-Instanz fungiert Geolocation als
-
Proxy-Server:
- Abruf von Kartenkacheln eines Anbieters indirekt über den Server der REDAXO-Instanz
-
Cache-Server:
- Zwischenspeichern von Kartenkacheln im Cache-Verzeichnis der REDAXO-Instanz
- Cache-Verwaltung per Cron-Job
Zur Nutzung der Proxy/Cache-Funktionalität ist es lediglich notwendig, in der Kartenverwaltung der Webseite die gewünschten URLs zu konfigurieren. Das Geolocation-Javascript erzeugt die Karten per LeafletJS und nutzt immer den hier beschriebenen ProxyCache.
Der Proxy kann auch mit Karten eingesetzt werden, die mit anderer Software (z.B. OpenLayers) erzeugt werden; allerdings muss die URL dann entsprechend im JS angegeben werden. Geolocation sollte dazu als "nur Proxy" installiert werden.
Es ist nicht notwendig, das zu Geolocation gehörende Javascript zu laden, um die Proxy-Funktionalität zu nutzen. In der Installationsbeschreibung ist beschrieben, wie Geolocation Proxy-optimiert installiert werden kann.
Die Kartenkacheln können mit einer standardisierten URL vom Server der REDAXO-Instanz abgerufen werden. Die URL unterscheiden sich nur über die Datensatznummer, unter der die Karten-URL in der Karten-Verwaltung erfasst wurde.
index.php?geolayer=«id»&x={x}&y={y}&z={z}&r={r}
oder
?geolayer=«id»&x={x}&y={y}&z={z}&r={r}
Erkennt die boot.php
von Geolocation den URL-Parameter geolayer
wird versucht, die
entsprechende Kartenkachel mit der Koordinate {x}/{y}
und Zoom-Faktor {z}
an den Client
auszuliefern.
Statt geolayer
kann — z.B. um Namenskonflikte zu umgehen — ein individueller
Parameter-Name über die Systemparameter gesetzt werden.
Das weitere Vorgehen unterscheidet sich abhängig davon, ob Kacheln im Cache gehalten werden oder nicht.
Die REDAXO-Instanz fungiert als Proxy-Server zwischen dem Client und dem Server des Kartenanbieters.
- Wenn die
«id»
nicht in der Karten-Tabelle gefunden wird, sendet der Server404 Not Found
. - Wenn der Karten-Datensatz auf "offline" gesetzt ist, sendet der Server
404 Not Found
. - Aus der URL werden die Parameter
x
,y
undz
extrahiert. - Mit den Parametern sowie dem zufällig ausgewählten Sub-Domänen-Kürzel wird die Anbieter-URL befüllt.
- Beim Karten-Server wird die Kartenkachel abgerufen.
- Die Rückgabe vom Tile-Server wird bearbeitet:
- Fehler: schicke Fehlercode und Fehlermeldung an den Client
- Erfolg: schicke die Kachel an den Client.
Das Verfahren mit Caching erweitert die Proxy-Abfrage um die Speicherung der Kacheln in einem
Cache-Verzeichnis . Für jeden Kartentyp wird ein separates Verzeichnis geführt, dessen Name wiederum
die «id»
ist.
/redaxo/cache/addons/geolocation/«id»
Voraussetzung ist, dass in der Konfiguration für den Kartentyp «id»
die 'Aufbewahrungsdauer im
Cache (TTL)' auf mehr als 0 Minuten eingestellt ist.
- Wenn die
«id»
nicht in der Karten-Tabelle gefunden wird, sendet der Server404 Not Found
. - Wenn der Karten-Datensatz auf "offline" gesetzt ist, sendet der Server
404 Not Found
. - Aus der URL werden die Parameter
x
,y
undz
extrahiert. - Aus den Parametern wird der Cache-Dateiname erzeugt.
- Die Cache-Datei wird abgerufen
- Wenn gefunden und nicht abgelaufen (TTL überschritten): schicke die Datei aus dem Cache an den Client. Fertig.
- sonst: Cache-Datei löschen und weiter mit 6.
- Mit den Parametern sowie dem zufällig ausgewählten Sub-Domänen-Kürzel wird die Anbieter-URL befüllt.
- Beim Karten-Server wird die Kartenkachel abgerufen.
- Die Rückgabe vom Tile-Server wird bearbeitet:
- Fehler: schicke Fehlercode und Fehlermeldung an den Client
- Erfolg: speichere die Kachel im Cache und sende sie an den Client.
Der Cache wird regelmäßig bereinigt. Dazu startet ein Cronjob Geolocation: Cleanup Cache
regelmäßig und führt diese Arbeitsschritte aus:
- Lösche alle Dateien, deren Aufbewahrungsdauer (TTL) abgelaufen ist.
- Wenn danach mehr als die zulässige Höchstanzahl Dateien verbleibt, wird die Aufbewahrungsdauer halbiert und Schritt 1 erneut durchgeführt.
Die Schritte werden so oft wiederholt, bis die maximale Anzahl Dateien unterschritten ist.
Der Cronjob wird automatisch mit folgenden Parametern installiert:
- Einmal am Tag (05:30 Uhr)
- Backend/Frontend
- Scriptanfang
- aktiviert
Umkonfigurieren des Cronjobs ist möglich; die Daten werden beim Re-Installieren nicht
überschrieben. Wurde der Cronjob umbenannt oder gelöscht, wird beim Re-Installieren der
Cronjob Geolocation: Cleanup Cache
neu angelegt.
Die bei der Installation benutzen Job-Parameter können mit Instanz-individuellen Systemparametern überschrieben werden.