Die Umkreissuche (z.B.:„Unsere Filialen in Ihrer Nähe“) gehört nicht unbedingt zu den Standards bei der Seitenerstellung. Deshalb soll das Prinzip an diesem Beispiel hier kurz erklärt werden:

Ohne Geodatenbank geht es nicht

Solche Funktionen basieren auf einer Geo-Datenbank, die Postleitzahlen, Städte und Stadtteile mit ihren Geo-Koordinaten (Longitude und Latitude) enthält und über die man die Koordinaten des anfragenden Benutzers ermittelt sowie einer Datenbanktabelle mit den Bezeichnungen, Adressen und Geokoordinaten der Filialen.

Als Geodatenbank kann man zum Beispiel dieOpen-Source-Geodatenbank OpenGeoDB nutzen, die alle deutschen Postleitzahlen enthält. Für internationale Projekte ist die GeonamesDB besser geeignet. Die Filialdatenbanktabelle dazu muss man in jedem Fall selbst erzeugen.

Von Koordinaten zu Entfernungen

Die eigentliche Suche basiert auf dem Lehrsatz des Pythagoras über rechtwinklige Dreiecke, der aussagt, dass die Summe der Kathetenquadrate in einem flachen, rechtwinkligen Dreieck dem Hypothenusenquadrat gleich ist (a²+b²=c³).

Damit ergibt sich der Lösungsweg:

  1. Differenz zwischen Länge und Breite von Anfrager und Filiale ermitteln
  2. Differenzen quadrieren und addieren
  3. Die Wurzel aus dem Ergebnis ziehen

Die Wurzel aus der Summe der Koordinatendifferenzquadrate stellt dann den Abstand der beiden Orte voneinander dar.

Die Erde ist keine Scheibe: Korrektheit und Geschwindigkeit

Die Korrektheit dieser Lösung hängt stark von korrekten Eingangsdaten ab, Fehler in der Geo-Datenbank zeigen sich in den Resultaten.

Es gibt aber auch prinzipielle Fehlerquellen, beispielsweise die Tatsache, dass die Erdoberfläche kugelförmig und nicht flach ist, so dass der Pythagoras nicht hundertprozentig greifen kann – da braucht man für eine genaue Entfernungsbestimmung schon die sphärische Geometrie.

Auch die Tatsache, dass ein Längengrad auf der Oberfläche der Erdkugel beispielsweise an den Polen deutlich kürzer ist als am Äquator, gehört zu den offensichtlichsten Fehlerquellen. Und dann gibt es ja auch noch Berge und Täler…

Für das Beispiel einer Filialsuche im Umkreis reicht die Genauigkeit aber im Normalfall völlig aus.

Einen Teil dieser Fehler kann man zwar mit höherem Programmier- und Rechenzeitaufwand einhegen, aber der an einem physikalischen Filialbesuch interessierte Surfer sollte auch keine zu langen Antwortzeiten erleben. Was nützt ein exakteres Ergebnis, wenn der potentielle Kunde sich schon vorher enttäuscht abgewandt hat…