Daniel Steffen novinet
Angesehenes Mitglied
Hallo,
jetzt mal was für die Freaks unter uns... ich scheitere derzeit an der Abstandsentfernung einer Umkreissuche.
Folgende Sachlage: ich habe eine DB mit plz und Orten der User sowie deren longitude && latitude (in Google-Maps wird alles perfekt angezeigt).
Nun möchte ich ne umkreissuche machen, aber die Abstände sind wohl falsch... er zeigt mir auch komische Entfernungen an etc. Ich möchte das ganze gerne ohne zusätzliche geo-DB Datenbanken lösen, das muss ja zu machen sein. Hier mein Ansatz:
$daniel = read(db_q(user,"WHERE user = 'daniel'"); // Gibt mir die Daten des Users Daniel raus als Objekt.
$laenge = $daniel->map_longitude; // Longitude
$breite = $daniel->map_latitude; // Latitude
$radius = 6367.4; // Erdradius
$umkreis = 50;
$dbQ = db_q_single(user,"id,user,zip,city,(6367.41*SQRT(2*(1-cos(RADIANS(map_latitude))*cos(".$breite."*(sin(RADIANS(map_longitude))*sin(".$laenge."+cos(RADIANS(map_longitude))*cos(".$laenge.")-sin(RADIANS(map_latitude))*sin(".$breite."))) AS Distance","WHERE map_longitude IS NOT NULL && zip IS NOT NULL && country = 'Deutschland' && (ACOS((SIN(radians($breite))*SIN(RADIANS(map_latitude))) + (COS(radians($breite))*COS(RADIANS(map_latitude))*COS(RADIANS(map_longitude)-radians($laenge)))) *6371) <= '$umkreis' ORDER BY Distance"
while($res = read($dbQ))
{.....}
Lasst euch nicht von meinen sql-Funktionen abschrecken, die verpacken nur die eigentlichen SQL-Befehle in schnellere Programmierabfolgen.. sonst nichts.
Ich habe auch mal gelesen, dass man die daten erst in RAD umwandeln muss - ich weiss net. Bin gerne bereit auch für ein fertiges Script was zu bezahlen, mein Ziel ist es einfach eine richtige Abfrage zu erhalten.
Dankeschön im Vorraus, Daniel
jetzt mal was für die Freaks unter uns... ich scheitere derzeit an der Abstandsentfernung einer Umkreissuche.
Folgende Sachlage: ich habe eine DB mit plz und Orten der User sowie deren longitude && latitude (in Google-Maps wird alles perfekt angezeigt).
Nun möchte ich ne umkreissuche machen, aber die Abstände sind wohl falsch... er zeigt mir auch komische Entfernungen an etc. Ich möchte das ganze gerne ohne zusätzliche geo-DB Datenbanken lösen, das muss ja zu machen sein. Hier mein Ansatz:
$daniel = read(db_q(user,"WHERE user = 'daniel'"); // Gibt mir die Daten des Users Daniel raus als Objekt.
$laenge = $daniel->map_longitude; // Longitude
$breite = $daniel->map_latitude; // Latitude
$radius = 6367.4; // Erdradius
$umkreis = 50;
$dbQ = db_q_single(user,"id,user,zip,city,(6367.41*SQRT(2*(1-cos(RADIANS(map_latitude))*cos(".$breite."*(sin(RADIANS(map_longitude))*sin(".$laenge."+cos(RADIANS(map_longitude))*cos(".$laenge.")-sin(RADIANS(map_latitude))*sin(".$breite."))) AS Distance","WHERE map_longitude IS NOT NULL && zip IS NOT NULL && country = 'Deutschland' && (ACOS((SIN(radians($breite))*SIN(RADIANS(map_latitude))) + (COS(radians($breite))*COS(RADIANS(map_latitude))*COS(RADIANS(map_longitude)-radians($laenge)))) *6371) <= '$umkreis' ORDER BY Distance"
while($res = read($dbQ))
{.....}
Lasst euch nicht von meinen sql-Funktionen abschrecken, die verpacken nur die eigentlichen SQL-Befehle in schnellere Programmierabfolgen.. sonst nichts.
Ich habe auch mal gelesen, dass man die daten erst in RAD umwandeln muss - ich weiss net. Bin gerne bereit auch für ein fertiges Script was zu bezahlen, mein Ziel ist es einfach eine richtige Abfrage zu erhalten.
Dankeschön im Vorraus, Daniel