Ein Filialfinder ist das kleine Feature, das früher oder später jedes Unternehmen mit mehreren Standorten braucht: das Suchfeld „Filiale in Ihrer Nähe“, das aus einer Postleitzahl eine kurze, nach Entfernung sortierte Liste von Standorten auf einer Karte macht. Von außen wirkt das trivial, und der Happy Path ist tatsächlich simpel. Ein guter Filialfinder erledigt jedoch unauffällig drei Aufgaben gut: Er versteht unsaubere Ortseingaben, er sortiert Filialen nach echter Nähe, und er rendert das Ergebnis auf einer Karte, mit der ein Mensch etwas anfangen kann.
Dieser Leitfaden zeigt, wie eine Händlersuche technisch funktioniert, welche vier Schritte zum Aufbau mit einer Maps API nötig sind und welche Details eine Demo von einer produktionsreifen Lösung trennen. Jede Karte in diesem Artikel wird mit der MapAtlas API selbst gerendert.
Was ein Filialfinder tatsächlich leistet
Ohne Styling betrachtet ist ein Filialfinder eine Pipeline aus drei Stufen:
- Geocoding der Besuchereingabe. „1012 Amsterdam“, „SW1A 1AA“ oder eine geteilte GPS-Position müssen alle zu einer einzigen Latitude und Longitude werden.
- Umkreis-Ranking der Filialen. Ausgehend von dieser Koordinate und der eigenen Standortliste gilt es, die nächstgelegenen innerhalb eines sinnvollen Radius zu finden.
- Rendering der Ergebnisse. Die sortierten Standorte kommen als Marker auf die Karte, jeweils mit Adresse, Öffnungszeiten und einem Link zur Route.
Die Karte unten ist genau diese dritte Stufe, gerendert mit MapAtlas-Tiles: sechs Filialen im Zentrum von Amsterdam, gesetzt nach Entfernung vom Suchpunkt. Hier sind es Supermärkte, doch die Karte bleibt identisch, egal ob die Marker aus einem POI-Datensatz oder aus der eigenen Standortliste stammen.

Die Farbreihenfolge entspricht dem Ranking. Gesucht wurde von der Kartenmitte aus, die Marker sind die nächstgelegenen Filialen in Reihenfolge, die nächste zuerst.
Schritt 1: Die Besuchereingabe geocodieren
Eingegeben wird eine Postleitzahl, eine Stadt oder eine vollständige Adresse, gebraucht wird eine Koordinate. Das ist Forward Geocoding.
// Turn what the visitor types into a coordinate (autocomplete geocoding)
const res = await fetch(
`https://gateway.mapmetrics-atlas.net/autocomplete/` +
`?token=${API_TOKEN}&text=${encodeURIComponent(query)}` +
`&focus.point.lat=52.37&focus.point.lon=4.89` // bias toward your service area
);
const { features } = await res.json();
const [lon, lat] = features[0].geometry.coordinates; // [lon, lat]
const label = features[0].properties.label; // "Damrak, Amsterdam, North Holland, Netherlands"
Zwei Details sind hier entscheidend. Ein focus.point in der Nähe des eigenen Einzugsgebiets sorgt dafür, dass „Cambridge“ zum richtigen Ort auflöst. Und der Fall, dass der Besucher statt einer Eingabe das Geräte-GPS teilt, will behandelt sein: dann liegt die Koordinate bereits vor und dieser Schritt entfällt komplett.
Schritt 2: Die eigenen Filialen nach Entfernung sortieren
Die Besucherkoordinate steht. Die Filialen selbst sind eigene Daten: eine Liste von Standorten, jeder mit Latitude und Longitude, die in der eigenen Datenbank liegt. Sie zu sortieren ist eine Luftlinienberechnung (Haversine), ganz ohne API-Call:
// Your branches, each with a lat/lon. Rank by distance from the visitor.
const ranked = stores
.map(s => ({ ...s, distance_m: haversine(lat, lon, s.lat, s.lon) }))
.sort((a, b) => a.distance_m - b.distance_m)
.slice(0, 6);
Mehr braucht ein einfacher Filialfinder nicht. Bei einem großen Filialnetz empfiehlt sich vorab ein Filter auf eine Bounding Box um den Besucher herum, damit nicht bei jedem Request die Distanz zu jeder Filiale gemessen wird; sortiert werden dann nur die Überlebenden. Heraus kommt eine kurze Liste der nächstgelegenen Standorte, jeder mit einem distance_m.
Schritt 3: Nach Entfernung sortieren, dann nach Fahrzeit verfeinern
Die Luftlinie ist der richtige Default. Sie ist schnell, sie braucht keinen zusätzlichen Call, und bei einem dichten Netz stimmt sie meistens. Doch die per Luftlinie nächste Filiale ist nicht immer die am schnellsten erreichbare: ein Standort 400 Meter entfernt jenseits eines Flusses kann einen Zehn-Minuten-Umweg zur nächsten Brücke bedeuten.
Wenn „am nächsten“ tatsächlich „am schnellsten erreichbar“ heißen soll, werden die besten Kandidaten per Directions oder Matrix nach echter Reisezeit neu sortiert:
// Re-rank the closest stores by real drive time (MapAtlas Matrix API)
const res = await fetch(`https://gateway.mapmetrics-atlas.net/matrix/?token=${API_TOKEN}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
sources: [{ lat, lon }],
targets: top3.map(s => ({ lat: s.lat, lon: s.lon })),
costing: 'auto', // 'auto' | 'bicycle' | 'pedestrian'
}),
});
const { sources_to_targets } = await res.json();
const row = sources_to_targets[0]; // one entry per target, each with .time (seconds)
const byTime = top3
.map((s, i) => ({ ...s, time: row[i].time }))
.sort((a, b) => a.time - b.time);
Das passiert nur für die Handvoll nächstgelegener Kandidaten, bleibt also ein einzelner günstiger Call und nicht einer pro Filiale.
Schritt 4: Die Filialen auf einer Karte rendern
Der letzte Schritt ist die Karte selbst. Für jede sortierte Filiale kommt ein Marker, dazu ein Popup mit Adresse und Öffnungszeiten, und der Kartenausschnitt wird so gesetzt, dass jedes Ergebnis sichtbar ist. Mit einer Maps API, die Tiles, Geocoding und Suche von einem Anbieter liefert, läuft der gesamte Filialfinder über einen Anbieter und ein Koordinatensystem, Ende zu Ende. Genau darauf basiert die Karte weiter oben in diesem Artikel.
Jeder Marker bekommt ein Popup mit dem Nötigsten, das ein Besucher zum Handeln braucht: Name, Adresse, Entfernung, Öffnungszeiten und einen „Route“-Link, der die Koordinate an eine Routing-Engine übergibt.
Details, die eine Demo von der Produktion trennen
Leere Ergebnisse. Jemand sucht aus einer Region, in der es keine Filiale gibt. Vorab zu entscheiden: den Radius automatisch erweitern, die einzige nächste Filiale zeigen, egal wie weit entfernt, oder ehrlich „keine Filiale im Umkreis von 50 km“ ausgeben.
Öffnungszeiten. Ein Filialfinder, der eine geschlossene Filiale als beste Option anzeigt, frustriert. Nach Öffnungszeiten filtern oder kennzeichnen, damit „jetzt geöffnet“ eine erstklassige Option wird.
Mehrdeutige Eingaben. „Cambridge“ gibt es in England und in Massachusetts, „Springfield“ dutzendfach. Ein Country-Bias im Geocoding-Schritt räumt das meiste davon ab, Autocomplete während der Eingabe den Rest.
Mobiles GPS und Einwilligung. Auf dem Smartphone ist der Button „Meinen Standort verwenden“ die stärkste Variante, doch das Auslesen des Geräte-GPS sind Standortdaten und braucht eine Einwilligung. Erst fragen, und bei Ablehnung auf die Texteingabe zurückfallen.
Datenschutz. Der Standort des Besuchers ist in dem Moment ein personenbezogenes Datum, in dem er ihm zugeordnet wird. Bedarfsgerecht geocodieren, die Rohkoordinate nicht speichern und eine EU-basierte API nutzen, damit der Standort den EWR nicht verlässt. Den vollständigen Überblick liefert unser Leitfaden zu DSGVO-konformen Karten.
Einen Filialfinder mit MapAtlas bauen
MapAtlas liefert die gesamte Pipeline aus einer API und einem Koordinatensystem. Die Geocoding API macht aus Postleitzahlen und Städten Koordinaten, inklusive Country-Bias; die eigene Filialliste wird gegen diese Koordinate sortiert; die APIs Directions und Matrix sortieren die besten Kandidaten nach echter Reisezeit neu; und die Tiles der Dynamic Maps rendern das Ergebnis, genau wie in diesem Artikel gezeigt. Da alles standardmäßig innerhalb der EU läuft, bleibt der Standort des Besuchers im EWR, was den Filialfinder ohne Zusatzaufwand DSGVO-konform hält.
Vollständige Request- und Response-Formate für jeden Endpoint stehen in der MapAtlas API-Dokumentation. Ein Blick auf die Search API lohnt sich ebenfalls, wenn der Filialfinder nicht nur die eigenen Standorte, sondern auch Points of Interest rund um den Besucher entdecken soll.
Ein Filialfinder ist ein kleines Feature mit viel stiller Urteilskraft darin: vage Eingaben verstehen, nach echter Nähe sortieren und den Umstand respektieren, dass ein Standort ein personenbezogenes Datum ist. Wer diese drei Punkte richtig löst, macht aus dem Suchfeld „Filiale in Ihrer Nähe“ statt einer Nebensache eines der meistgenutzten Elemente der eigenen Website.
Häufig gestellte Fragen
Was ist ein Filialfinder?
Ein Filialfinder ist die Funktion „Filiale in Ihrer Nähe“ auf einer Handels- oder Dienstleistungswebsite. Der Besucher gibt eine Postleitzahl oder eine Stadt ein oder teilt seinen Standort, und der Filialfinder liefert die nächstgelegenen Standorte nach Entfernung sortiert, jeweils als Marker auf einer Karte mit Adresse, Öffnungszeiten und Routenlink. Technisch sind es drei Schritte: die Eingabe zu einer Koordinate geocodieren, eine Umkreissuche gegen die eigene Standortliste ausführen und die Ergebnisse auf einer Karte rendern.
Wie baut man einen Filialfinder?
Ein Filialfinder entsteht in vier Schritten. Erstens: die Eingabe des Besuchers (Postleitzahl oder Stadt) über eine Geocoding-API in Latitude und Longitude umwandeln. Zweitens: eine Umkreis- oder Nearest-Neighbour-Abfrage gegen die eigenen Standortkoordinaten ausführen, um die nächstgelegenen Filialen zu ermitteln. Drittens: diese Treffer nach Entfernung und optional nach Fahrzeit sortieren. Viertens: die sortierten Standorte als Marker mit Popups auf einer Karte rendern. Eine Maps API, die Geocoding, Umkreissuche und Kartentiles aus einer Hand liefert, deckt alle vier Schritte ab, ohne dass mehrere Dienste zusammengestückelt werden müssen.
Braucht man eine API für die Händlersuche?
Benötigt werden Geocoding, Kartentiles und meist ein Ranking nach Fahrzeit; die Standortliste selbst sind die eigenen Daten. Eine kurze Filialliste lässt sich hart codieren und die Luftlinie selbst berechnen. Sobald jedoch Postleitzahlensuche, Fahrzeit-Sortierung und eine gerenderte Karte dazukommen, erspart eine API, die Geocoding, Matrix und Kartenrendering von einem Anbieter kombiniert, die Verdrahtung von drei Anbietern und den Abgleich ihrer Koordinatenformate.
Wie sortiert ein Filialfinder die nächstgelegenen Standorte?
Das einfachste Ranking ist die Luftlinie (Großkreisdistanz) von der Besucherkoordinate zu jedem Standort, aufsteigend sortiert. Das ist schnell und für dichte städtische Netze ausreichend. Für ein besseres Ergebnis werden die besten Kandidaten über eine Directions- oder Matrix-API nach echter Reisezeit neu sortiert, denn die per Luftlinie nächste Filiale ist nicht immer die am schnellsten erreichbare, sobald Flüsse, Autobahnen und Einbahnstraßen ins Spiel kommen.
Ist ein Filialfinder DSGVO-konform?
Er kann es sein, und bei Besuchern in der EU muss er es sein. Ein Filialfinder verarbeitet einen Standort, und dieser ist ein personenbezogenes Datum, sobald er einer Person zugeordnet ist. Konform bleibt er, wenn bedarfsgerecht geocodiert statt die Besucherkoordinate gespeichert wird, wenn eine EU-basierte Maps API zum Einsatz kommt, damit der Standort den EWR nicht verlässt, und wenn vor dem Auslesen des Geräte-GPS eine Einwilligung eingeholt wird. MapAtlas verarbeitet Standortanfragen standardmäßig innerhalb der EU.

