





















| ||||
Wie funktioniert eine Umkreissuche z.B. für Filialen? Weder anhand von Postleitzahlen und oder Vorwahlen funktionieren, da diese scheinbar wahllos verteilt sind. Und über Landesgrenzen hinweg funktioniert eine solche Suche erst recht nicht. Abhilfe schaffen da GEO-Daten, also die exakte globalen Positionen der Filialen auf der Erde. Es handelt sich dabei um LON- und LAN-Angaben die man z.B. mit einem GPS-Gerät herausfinden kann. Aber da gibt es noch eine einfacherer Möglichkeit, als alle Filialen abzufahren und deren GPS-Daten zu notieren: maps.google.de! Mit den Beschreibungen der API von maps.google.de läßt sich schnell ein Tool programmieren mit dem sich die genauen LON- & LAN-Werte finden lassen. Diese werden dann in einer Datenbank gespeichert und können leicht für eine Umkreissuche verwendet werden. Beispiel für eine DB-Abfrage: select * from geo order by ABS(DEGREES(ACOS(SIN(RADIANS(lat))*SIN(RADIANS($ort_lat))+ COS(RADIANS(lat))*COS(RADIANS($ort_lat))*COS(RADIANS(lon - $ort_lon))))) limit 0,15 Die Variablen $ort_lat und $ort_lon ist die Original-Position von der die Umkreissuche ausgehen soll. Die entsprechenden Zellen der DB-Tabelle heißen lat und lon. Diese einfache Abfrage such nach den nächsten 15 Orten. Praktische Erfahrungen haben gezeigt das diese Formel völlig ausreicht um passable Ergebnisse zu erhalten. Berechnung der Entfernung: Anstatt einfach nur ein "select * ..." kann man direkt select DEGREES(ACOS(SIN(RADIANS(lat))*SIN(RADIANS($ort_lat))+ COS(RADIANS(lat))*COS(RADIANS($ort_lat))*COS(RADIANS(lon - $ort_lon))) * 60 * 1.85201) ... abfragen. Die zusätzliche Angabe von * 60 * 1.85201 berechnet die Entfernung (Luftlinie) der gefundenen Orte. Der zurück gegebene Wert (hier $row[0] genannt muß noch einmal umgerechnet werden: $entf=substr(((round($row[0]*10)/10)+0.01),0,-1); Damit hat man dann die Entfernung in Kilometer mit einstelliger Kommazahl. (Anmerkung: Die Formeln sind für Europa ausgelegt) Diese Daten können dann auch benutzt werden um eine Landkarte z.B. maps.google.de anzuzeigen. Wenn viele Lokalitäten vorhanden sind, und die Position der Stadt ausreicht, kann man von http://www.geonames.org/ komplette SQL-Dateien runterladen und in seine eigene DB importieren. Wird Ajax verwendet, hat man eine schöne Umkreissuche. | ||||




| ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
