Das Addon bündelt Funktionen für den Umgang mit Geo-Koordinaten: Tile-Proxy, Tile-Cache, Rechnen mit Koordinaten auf PHP-Ebene, Karten mit Leaflet anzeigen.
Die Konfiguration ist flexibel und update- bzw. reinstallations-sicher individualisierbar. Die Kartenanzeige mit LeafletJS kann mit eigenen JS-Schnipseln rasch und on the fly erweitert werden.
Kontakt: Thomas Skerbis
Backend
Karten
<rex-map .... ></rex-map>
Demo
Ideen gibt es, Hilfe ist willkommen.
In das Verzeichnis redaxo/src/addons/geolocation
entpacken und in der Addon-Verwaltung die
Installation durchführen.
Dabei werden Demo-Daten (Links zu Tile-Servern und zwei Kartensätze installiert). Die Here-Kartenlinks
sind ohne die nötige "appId", die nach Registrierung bei HERE erzeugt
werden kann. Die vorgesehene Stelle in der URL ist mit ..........
markiert.
Der Cronjob für die Cache-Bereinigung hat die Einstellungen
Details - auch zu individualisierten Installationen - stehen in der Installationsanleitung
OSM-Proxy-Nutzer müssen im Abschnitt Karten die gewünschten Tileserver hinterlegen und im Anschluss die URL für die Tiles im z.B. Leaflet JS ändern.
/index.php?geolayer=«id»&x={x}&y={y}&z={z}&r={r}
(«id» steht für die Datensatz-ID der gewünschten Karte)
<rex-map .... ></rex-map>
Darstellung der Karte im Browser über ein Custom-HTML-Element:
<rex-map mapset="..." dataset="..."></rex-map>
Die Attribute sind zu Strings umgeformte Arrays/Objekte.
<rex-map
class="leaflet-map"
mapset="[{"tile":"1","label":"Karte",....}]"
dataset="{"position":[47.516669,9.433338],....}"
></rex-map>
Der JS-Code dazu ist ausbaufähig. Das HTML-Beispiel zeigt aber schon, wie mit setAttribute der Datensatz und die Kartenzusammenstellung ausgetauscht werden können.
Idee: komplexe interaktive Inputs für verschiedene Datensatz-Elemente in einer Web-Komponente gebündelt
<rex-map-input class="..." name="..." value="«dataset»" tools="position,marker,bounds,..."></rex-map-input>
Die Karte wird über einen Datensatz gesteuert, der die relevanten Daten zur Karte enthält.
datensatz = {
position: [47.516669,9.433338],
bounds: [[47.5,9.3],[47.7,9.7]],
marker: [[47.611593,9.296344],[47.586204,9.560653],[47.54378,9.686559]],
}
Alle Angaben sind optional. Position ist der "Hauptmarker" in der Karte in rot. Alle anderen zusätzlichen Marker sind blau. "Bounds" legt das Rechteck fest, dass auf jeden Fall in der Karte sichtbar sein soll.
Grundidee: es gibt gleich strukturierte Klassen je "Tool", wobei alle Elemente im Datensatz (position,bounds,marker) jeweils eine eigene Klasse haben. Die Klasse steuert die Anzeige auf der Karte toolspezifisch. Das System ist einfach erweiterbar nur durch Bereitstellung einer neuen Toolklasse.
Im Backend werden aus Layern(Tiles/Kacheln) Kartensätze zusammengestellt, die ihrerseits einen Datensatz bilden. Leaflet unterscheidet zwischen Basiskarten (type=b) und Overlays (type=o).
kartensatz = [
{
"layer":"1",
"label":"Karte",
"type" :"b",
"attribution":"Map Tiles © 2020 <a href=\"http:\/\/developer.here.com\">HERE<\/a>",
"active": true,
},
{
"layer":"2",
"label":"Satellit",
"type" :"b",
"attribution":"Map Tiles © 2020 <a href=\"http:\/\/developer.here.com\">HERE<\/a>"
"active": false,
},
{
"layer":"3",
"label":"Hybrid",
"type" :"b",
"attribution":"Map Tiles © 2020 <a href=\"http:\/\/developer.here.com\">HERE<\/a>"
"active": false,
}
]
Basiversion by Christoph Böcker.
Inspiriert von Thomas Skerbis Addon "osmproxy" und gefüttert mit Ideen und Snippets aus anderen Addons und aus den Diskussionen dazu auf GitHub und im Slack-Channel.
Kartendarstellung mit LeafletJS von Vladimir Agafonkin und weiteren Tools (siehe CREDITS).
Für Rechenoperationen mit Koordinaten und Formatumwandlungen ist die PHP-Bibliothek phpGeo von Markus Jaschen eingebaut.
Ideen-Beitrag für das Geo-Projekt von Thomas Blum