In PHP habe ich den folgenden Code zum Berechnen der Entfernung zwischen zwei Orten:
%Vor%Aber jetzt möchte ich Orte in der Nähe eines bestimmten Ortes über PHP aus meiner MySQL-Datenbank auswählen:
Ich hoffe, du kannst mir helfen. Vielen Dank im Voraus!
Die MySQL-Großkreisentfernung (Haversine-Formel) macht genau das, was Sie brauchen .
Mit nur 200 Datensätzen können Sie sie aber auch einfach alle laden und mit Code überprüfen. Der Datensatz ist wirklich viel zu klein, um sich zu viele Gedanken über Datenbank oder Code oder andere Optimierungen zu machen.
Berechnung der Entfernung zwischen Postleitzahlen in PHP hat ein paar PHP-Implementierungen dieses Algorithmus.
Suche mit der geografischen Nähe ist ziemlich genau das gleiche Problem, das Sie haben.
Das ist die Haversine-Formel. Sie können das PHP direkt in SQL übersetzen, so dass Sie die Datenbank räumlich abfragen können (die Alternative besteht darin, jeden Datensatz aus der Datenbank abzurufen und die Daten über PHP auszuführen). MySQL bietet alle mathematischen Funktionen, die Sie benötigen.
Ich tat dies für eine kommerzielle Website, die post / zipcode-basierte Distanz-Lookups zur Verfügung stellte, also ist es sicherlich ohne spezifische GIS-Funktionen möglich.
MySQL kann Zeilen geospatial indizieren. Sie müssen diese Berechnungen möglicherweise nicht selbst durchführen (Sie können MySQL einfach bitten, den Abstand zwischen zwei Geoobjekten zu berechnen und danach zu sortieren.).
Siehe: Ссылка
Warum benutzen Sie nicht die Geodaten von MySQL ...? Nein, nur Spaß.
Wenn die 200 Datensätze tatsächliche Orte wie Städte usw. sind, könnten Sie als Alternative die API von GeoNames verwenden?
Der folgende Webservice stellt die 10 am nächsten gelegenen Orte zur Verfügung:
Quelle: Ссылка
Vollständige Liste: Ссылка
Tags und Links php mysql geolocation distance geography