Ich habe eine Datenbank mit einer Liste von Geschäften mit Breiten- und Längenangaben. Basierend auf dem aktuellen (lat, lng) Ort, den ich eingegeben habe, würde ich gerne eine Liste von Gegenständen aus denen in einem Umkreis von 1 km, 5 km usw. erhalten?
Was sollte der Algorithmus sein? Ich brauche den PHP-Code für den Algorithmus selbst.
Sie müssen nur die folgende Abfrage verwenden.
Sie haben zum Beispiel Breiten- und Längengrad 37 und -122 in Grad eingegeben. Und Sie möchten nach Benutzern im Umkreis von 40 km vom aktuellen gegebenen Längen- und Breitengrad suchen.
%Vor%Wenn Sie die Suchentfernung in km suchen möchten, ersetzen Sie in der obigen Abfrage 3959 durch 6371.
Sie können auch Folgendes tun:
Wählen Sie alle Längen- und Breitengrade
Berechnen Sie dann die Entfernung für jeden Datensatz.
Der obige Prozess kann mit Mehrfachumleitung durchgeführt werden.
Zum Optimieren der Abfrage können Sie Stored Procedure verwenden.
Und das kann Ihnen auch helfen.
Wenn Sie PHP-Code zum Berechnen der Entfernung zwischen zwei Koordinatensätzen suchen, ist dies eine Klasse, die ich angepasst habe und die die Entfernung in Kilometern berechnet. Wenn Sie jedoch eine Datenbank verwenden, würde ich vorschlagen, dass Sie prüfen, ob Ihre Datenbank räumliche Berechnungen ausführen kann (ich weiß, dass SQL Server und MySQL von Kopf bis Fuß sind).
Hier ist ein interessanter Link für eine SQL-Lösung, die Sie vielleicht auschecken möchten. Optimieren eines SQL-Aufrufs der hairsine-Formel in PHP
%Vor%Tags und Links google-maps php geocoding geo