{"id":21330512,"url":"https://github.com/friendsofredaxo/geolocation","last_synced_at":"2025-07-12T08:32:37.993Z","repository":{"id":40462773,"uuid":"274159981","full_name":"FriendsOfREDAXO/geolocation","owner":"FriendsOfREDAXO","description":"Tile-Proxy/Cache und Kartendarstellung mit Leaflet für REDAXO 5.13+","archived":false,"fork":false,"pushed_at":"2025-06-26T08:24:41.000Z","size":31926,"stargazers_count":27,"open_issues_count":8,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-26T08:39:52.536Z","etag":null,"topics":["geolocation","here","heremaps","leaflet","mapkit","osm","redaxo","redaxo-addon","tile-proxy"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FriendsOfREDAXO.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-22T14:29:04.000Z","updated_at":"2025-06-26T08:08:50.000Z","dependencies_parsed_at":"2024-02-17T15:25:45.579Z","dependency_job_id":"d47aaaac-7d9b-4236-9ad5-a0dbdd6d4ea2","html_url":"https://github.com/FriendsOfREDAXO/geolocation","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/FriendsOfREDAXO/geolocation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fgeolocation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fgeolocation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fgeolocation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fgeolocation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FriendsOfREDAXO","download_url":"https://codeload.github.com/FriendsOfREDAXO/geolocation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fgeolocation/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264962492,"owners_count":23689822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geolocation","here","heremaps","leaflet","mapkit","osm","redaxo","redaxo-addon","tile-proxy"],"created_at":"2024-11-21T22:20:30.014Z","updated_at":"2025-07-12T08:32:32.964Z","avatar_url":"https://github.com/FriendsOfREDAXO.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Geo- und Karten-Unterstützung für [REDAXO](https://redaxo.org) 5.14+\n\nDas Addon bündelt Funktionen für den Umgang mit Geo-Koordinaten: Tile-Proxy, Tile-Cache, Rechnen mit\nKoordinaten auf PHP-Ebene, Karten mit Leaflet anzeigen.\n\nDie Konfiguration ist flexibel und update- bzw. reinstallations-sicher individualisierbar. Die\nKartenanzeige mit LeafletJS kann mit eigenen JS-Schnipseln rasch und on the fly erweitert werden.\n\nKontakt: [Thomas Skerbis](https://github.com/skerbis)\n\n![Titelbild](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/assets/titel.jpg?raw=true)\n\n## Features:\n\n- Backend\n    - [Karten-URLs](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/setings.md#tile) zu Karten-Anbietern mit weiteren Parametern inkl.\n      Sprachunterstützung und Cache-Verhalten\n    - [Kartensätze](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/settings.md#mapset) zusammenstellen und verwalten, die auf einer oder mehreren\n      Karten-Urls basieren\n    - Datenverwaltung mit YForm\n    - [Proxy-Server](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/proxy_cache.md#proxy) für Karten-Abrufe vom Browser\n    - [Cache](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/proxy_cache.md#cache) für Karten-Abrufe\n    - Verschleierung der tatsächlichen Karten-Url ggü. dem Client / Schutz der ggf. kostenpflichtigen\n      appId´s z.B. von Google oder HERE\n    - Kartendarstellung im Moduloutput mit demselben Code wie im Frontend\n    - Ausführliche Dokumentation online im Backend (bei installiertem Addon) bzw. auf GitHub\n\n- Karten\n    - LeafletJS als Kartensoftware integriert\n    - Karten-HTML als [Custom-HTML-Element](#rm) `\u003crex-map .... \u003e\u003c/rex-map\u003e`\n    - [Erweiterbare Tools](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devtools.md) zur Datendarstellung inkl. geoJSON (Basis, erweiterbar)\n    - Anwendungsbeispiel für [Module](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devphp.md#module)\n    - Einfache Einbindung des komprimierten JS / CSS im Frontend passend zur individuellen Konfiguration.\n\n- Demo\n    - [Stand-alone-Demo](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/example/demo.html) zur Demonstration des Custom-HTML-Elements und des Cache\n    - *redaxo/src/addons/geolocation/docs/example/demo.html* bitte ins REDAXO-Root kopieren wg. der Pfade\n\n- [Cache](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/proxy_cache.md#cache)\n    - Je Tile-URL ein eigenes Verzeichnis, separat löschbar\n    - [Cronjob](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/proxy_cache.md#cron) zum Aufräumen\n        - Dateien löschen, die älter sind als die Time-to-live der Tile-URL\n        - weitere ältere Dateien löschen wenn das Verzeichnis zu viele Dateien enthält\n\n- [Rechnen mit Koordinaten (PHP)](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devmath.md)\n    - [class FriendsOfRedaxo\\Geolocation\\Calc\\Point](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devmath.md#point): Koordinaten verwalten\n        - verschiedene Format als Input/Output; Konvertierung\n        - Distanzen und Richtung ermitteln\n        - Zielpunkt aus Richtung und Distanz\n    - [class FriendsOfRedaxo\\Geolocation\\Calc\\Box](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devmath.md#box): Rechteckigen Bereich verwalten\n        - Anlegen aus zwei gegenüberliegenden Ecken\n        - Dynamisch erweitern\n        - diverse Abfragen (north, south, ....)\n        - Berechnete Werte (center, innerRadius, outerRadius)\n    - [class FriendsOfRedaxo\\Geolocation\\Calc\\Math](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devmath.md#math): Rechteckigen Bereich verwalten\n        - diverse Methoden und Defaults basierend auf phpGeo\n        - Distanzen und Richtung ermitteln\n        - Zielpunkt aus Richtung und Distanz\n        - Konvertierung (DezimalDegree nach Degree/Minute und Degree/Minute/Second)\n\n## Was fehlt?\n\n- Karten interaktiv gestalten (Bounding-Box auswählen, Marker setzen/verschieben, ...)\n- Interaktion Karte und Eingabefeld\n- Zu einer Adresse die Koordinate ermitteln\n- Abfragen (z.B. Koordinate zu Adresse, Umkreissuche) cachen oder zumindest durch den Proxy leiten\n- Umgang mit Links z.B. auf Marker/Icon-Bildchen in geoJSON-Datensätzen (cachen oder zumindest durch\n  den Proxy leiten)\n- .....\n\nIdeen gibt es, Hilfe ist willkommen.\n\n## Installation\n\nIn das Verzeichnis `redaxo/src/addons/geolocation` entpacken und in der Addon-Verwaltung die\nInstallation durchführen.\n\nDabei werden Demo-Daten (Links zu Tile-Servern und zwei Kartensätze installiert). Die Here-Kartenlinks\nsind ohne die nötige \"appId\", die nach Registrierung bei [HERE](https://developer.here.com/) erzeugt\nwerden kann. Die vorgesehene Stelle in der URL ist mit `..........` markiert.\n\nDer Cronjob für die Cache-Bereinigung hat die Einstellungen\n- Einmal am Tag (04:30)\n- Backend/Frontend\n- Scriptanfang\n- aktiviert\n\nDetails - auch zu individualisierten Installationen - stehen in der [Installationsanleitung](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/install.md)\n\n## OSMProxy ersetzten\nOSM-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.\n\n```html\n/index.php?geolayer=«id»\u0026x={x}\u0026y={y}\u0026z={z}\u0026r={r}\n```\n(«id» steht für die Datensatz-ID der gewünschten Karte)\n\n\n## Beispielmasken:\n\n### Allgemeine Konfiguration\n\n![Konfiguration](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/assets/config.jpg?raw=true)\n\n### Kartensatz\n\n![Kartensatz: Auflistung](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/assets/maps_list.jpg?raw=true)\n![Kartensatz: Formular](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/assets/maps_edit.jpg?raw=true)\n\n### Layer-/Tile-Server\n\n![Tile-Layer: Auflistung](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/assets/tiles_list.jpg?raw=true)\n![Tile-Layer: Formular](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/assets/tiles_edit.jpg?raw=true)\n\n\u003ca name=\"rm\"\u003e\u003c/a\u003e\n### `\u003crex-map .... \u003e\u003c/rex-map\u003e`\n\nDarstellung der Karte im Browser über ein [Custom-HTML-Element](https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devphp#maphtml):\n\n```html\n\u003crex-map mapset=\"...\" dataset=\"...\"\u003e\u003c/rex-map\u003e\n```\nDie Attribute sind zu Strings umgeformte Arrays/Objekte.\n\n```html\n\u003crex-map\n    class=\"leaflet-map\"\n    mapset=\"[{\u0026quot;tile\u0026quot;:\u0026quot;1\u0026quot;,\u0026quot;label\u0026quot;:\u0026quot;Karte\u0026quot;,....}]\"\n    dataset=\"{\u0026quot;position\u0026quot;:[47.516669,9.433338],....}\"\n\u003e\u003c/rex-map\u003e\n```\n\nDer JS-Code dazu ist ausbaufähig. Das HTML-Beispiel zeigt aber schon, wie mit setAttribute der Datensatz und die Kartenzusammenstellung ausgetauscht werden können.\n\nIdee: komplexe interaktive Inputs für verschiedene Datensatz-Elemente in einer Web-Komponente gebündelt\n```html\n\u003crex-map-input class=\"...\" name=\"...\" value=\"«dataset»\" tools=\"position,marker,bounds,...\"\u003e\u003c/rex-map-input\u003e\n```\n\n\n#### Datensatz\n\nDie Karte wird über einen Datensatz gesteuert, der die relevanten Daten zur Karte enthält.\n\n```javascript\ndatensatz = {\n    position: [47.516669,9.433338],\n    bounds: [[47.5,9.3],[47.7,9.7]],\n    marker: [[47.611593,9.296344],[47.586204,9.560653],[47.54378,9.686559]],\n}\n```\nAlle Angaben sind optional. Position ist der \"Hauptmarker\" in der Karte in rot. Alle anderen\nzusätzlichen Marker sind blau. \"Bounds\" legt das Rechteck fest, dass auf jeden Fall in der\nKarte sichtbar sein soll.\n\nGrundidee: es gibt gleich strukturierte Klassen je \"Tool\", wobei alle Elemente im Datensatz (position,bounds,marker)\njeweils eine eigene Klasse haben. Die Klasse steuert die Anzeige auf der Karte toolspezifisch. Das System\nist einfach erweiterbar nur durch Bereitstellung einer neuen Toolklasse.\n\n\n#### Kartensatz\n\nIm Backend werden aus Layern(Tiles/Kacheln) Kartensätze zusammengestellt, die ihrerseits einen Datensatz bilden. Leaflet unterscheidet zwischen Basiskarten (type=b) und Overlays (type=o).\n```javascript\nkartensatz = [\n    {\n        \"layer\":\"1\",\n        \"label\":\"Karte\",\n        \"type\" :\"b\",\n        \"attribution\":\"Map Tiles \u0026copy; 2020 \u003ca href=\\\"http:\\/\\/developer.here.com\\\"\u003eHERE\u003c\\/a\u003e\",\n        \"active\": true,\n    },\n    {\n        \"layer\":\"2\",\n        \"label\":\"Satellit\",\n        \"type\" :\"b\",\n        \"attribution\":\"Map Tiles \u0026copy; 2020 \u003ca href=\\\"http:\\/\\/developer.here.com\\\"\u003eHERE\u003c\\/a\u003e\"\n        \"active\": false,\n    },\n    {\n        \"layer\":\"3\",\n        \"label\":\"Hybrid\",\n        \"type\" :\"b\",\n        \"attribution\":\"Map Tiles \u0026copy; 2020 \u003ca href=\\\"http:\\/\\/developer.here.com\\\"\u003eHERE\u003c\\/a\u003e\"\n        \"active\": false,\n    }\n]\n```\n\n## Referenzen\n\nBasiversion by [Christoph Böcker](https://github.com/christophboecker).\n\nInspiriert von [Thomas Skerbis](https://github.com/skerbis) Addon \"[osmproxy](https://github.com/FriendsOfREDAXO/osmproxy)\" und gefüttert mit Ideen und Snippets aus anderen Addons und aus den Diskussionen dazu auf GitHub und im [Slack-Channel](https://friendsofredaxo.slack.com/).\n\nKartendarstellung mit [LeafletJS](https://leafletjs.com/) von [Vladimir Agafonkin](https://agafonkin.com/) und weiteren\nTools (siehe [CREDITS](CREDITS.md)).\n\nFür Rechenoperationen mit Koordinaten und Formatumwandlungen ist die PHP-Bibliothek\n[phpGeo](https://github.com/mjaschen/phpgeo) von [Markus Jaschen](https://github.com/mjaschen) eingebaut.\n\nIdeen-Beitrag für das [Geo](https://github.com/FriendsOfREDAXO/friendsofredaxo.github.io/issues/124)-Projekt von [Thomas Blum](https://github.com/tbaddade)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Fgeolocation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffriendsofredaxo%2Fgeolocation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Fgeolocation/lists"}