Startseite → Plugins → Filialfinder für OpenStreetMap
Ein Finder für Filialen, Showrooms oder Abholpunkte — gebaut auf Leaflet und OpenStreetMap, also ohne Google-Cloud-Konto, ohne hinterlegte Kreditkarte und ohne Abrechnung pro Kartenaufruf.
Der Finder ist kein Shortcode, den man in einen Container legt. Er ist ein vollwertiges Bricks-Element: ein eigener Platz in der Elementliste mit eigenem Symbol, dreizehn Bedienelemente im Panel und eine Karte, die live im Editor dargestellt und bei jeder Änderung neu gezeichnet wird. Für ein Team, das in Bricks arbeitet, ist das der Unterschied zwischen blindem Konfigurieren und sofort sichtbarem Ergebnis.
Karte mit Markern, Adresssuche und „in meiner Nähe" — dazu ein Kategoriefilter und Clustering, sobald es viele Punkte werden.
Funktioniert auch außerhalb von Bricks — derselbe Finder lässt sich per Shortcode in jedes Theme einbauen, und ein Generator stellt ihn zusammen.
Standorte sind gewöhnliche Beiträge mit eigener Kategorie, die Website-Betreuerin legt sie also an wie alles andere — mit einer Karte direkt im Bearbeitungsfenster.
Geokodierung im Stapel für auf einmal importierte Listen, plus eine Standortübersicht mit den ermittelten Koordinaten.
Einstellungen in vier Reitern und ein Shortcode-Generator — eine geschlossene Liste von Optionen statt eines Felds für beliebigen Code.
Der öffentliche Geocoder von OpenStreetMap erlaubt eine Anfrage pro Sekunde und untersagt intensive Nutzung. Ein stark besuchter Shop braucht eine eigene Instanz oder einen bezahlten Anbieter — das sage ich vor dem Start, nicht nach der ersten Sperre.
Leaflet liegt im Plugin, statt von einem fremden CDN geladen zu werden. Die Seite geht nicht kaputt, weil jemand anderes einen Server abgeschaltet hat.Die Idee stammt aus einem Projekt für ein Unternehmen in den Niederlanden, bei dem eine Standortkarte ohne Google Maps funktionieren musste. Was ich dort über einen Betrieb mit vielen Standorten gelernt habe, kam hier als von Grund auf geschriebenes Plugin zurück.
Architektur, Benennung und Struktur sind hier entstanden, jede Änderung passiert also an der Quelle — eine neue Funktion oder eine Korrektur erfordert kein Raten, was jemand anderes gemeint hat. Bei einer dringenden Korrektur ist das der Unterschied zwischen einer Stunde und einer Woche.
Das Frontend ist reines JavaScript, die Daten laufen über die REST-API statt über admin-ajax, und im Repository liegen genau die Dateien, die auf den Server kommen. Für eine Korrektur muss nichts kompiliert werden.
Jede Abfrage läuft über ein Repository. Der Umstieg auf eine eigene Tabelle bei einigen tausend Standorten ist deshalb ein Klassentausch plus Migration — und kein Neuschreiben des Plugins.
Koordinatenabfragen laufen über einen eigenen Proxy mit Cache und einer Begrenzung auf eine Anfrage pro Sekunde, genau wie es die Nutzungsbedingungen des Dienstes verlangen.
Das Stylesheet ist geteilt in eine Layout-Ebene, die immer gilt, und eine Optik, die sich mit einer Einstellung abschalten lässt. Die Bedienelemente erben die Typografie der Seite, und die Schaltflächen nehmen eine Klasse aus dem Theme an.
Für jede oben beschriebene Entscheidung gibt es einen eigenen Test — die PHP- und JavaScript-Suiten laufen mit einem Befehl, ohne Datenbank und ohne WordPress-Installation. Keine davon hat die folgenden drei Dinge gefunden.
Das Element verschwand spurlos. Auf einer Seite, die aus einer Bricks-Inhaltsvorlage gerendert wurde, erschien es überhaupt nicht — kein HTML, kein PHP-Fehler, nichts in der Konsole. Das findet kein Unit-Test; gefunden hat es der Einsatz auf einer echten Website.
Eine Karte, die kaputt aussieht, aber nur leer ist. Ein Standardmittelpunkt nahe null landet im Golf von Guinea — flaches Blau, das jede und jeder als nicht geladene Kacheln liest. Eine Kleinigkeit, die mit einem Anruf endet, die Karte sei kaputt.
Mehrere hundert Tests ersetzen keinen einzigen Klick. Vier Bedienelemente im Builder waren tot, obwohl die komplette JavaScript-Suite durchlief. Deshalb gehört eine Liste manueller Prüfungen zum Release-Plan und bleibt kein guter Vorsatz.
Ich richte diesen Finder für Sie ein oder schreibe ein Bricks-Element für Ihren konkreten Fall. Schreiben Sie, wie viele Punkte es sind und woher die Liste kommt.
Ihren Fall beschreiben →Oder per E-Mail: info@asymetria.com.pl