Hallo zusammen,
ich habe ein relativ anspruchsvolles Problem, wie ich glaube. Ich habe meine Posts um Latitude- und Longitude-Koordinaten erweitert, diese werden in der Datenbank gespeichert. Nun nutze ich folgende Funtkion (herzlichen Dank an Tobias Leuschner), um die Distanz gegebener Koordinaten zum entsprechenden Post zu berechnen:
<?php
function distance($lat1, $lng1, $lat2, $lng2)
{
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;
$r = 6371;
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
return round($km);
} ?>
Alles anzeigen
Das funktioniert alles soweit auch ganz gut, alle Posts werden mit Distanz-Angabe in km angezeigt.
<?php $distance = distance($user_lat, $user_lng, $location['lat'], $location['lng']); echo $distance; ?>
Jetzt würde ich gerne alle Posts in der Reihenfolge der Distanz ausgeben.
Ich denke mal dafür müsste ich den Loop erst einmal durchlaufen lassen, um die Distanz zu ermitteln und ein zweites Mal, um die Distanz irgendwie als orderby Variable nutzen zu können - falls das überhaupt geht. Oder sieht jemand noch eine andere, einfache Möglichkeit? Ich bin für alle Hinweise dankbar.
Grüße,
Uwe