Hallo,
wenn ich einmal davon ausgehe, das ich nicht einem grundsätzlichem Verständnisproblem aufgesessen bin und meine Mathematik-Kenntnisse nicht ganz falsch sind.... ....komme ich mit meiner Umkreissuche trotzdem nicht weiter. Mit dem nachfolgendem Code versuche ich eine Umkreissuche zu realisieren:
function getlatlang($location) {
$geocode = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='. urlencode($location) .'&sensor=false');
$output= json_decode($geocode);
return $output->results[0]->geometry->location;
}
if($search_Location!='') {
$objlocation = getlatlang($search_Location);
$latitude = $objlocation->lat;
$longitude = $objlocation->lng;
$range = $search_Distance;
if($latitude != "" && $longitude != "") {
$lat_range = $range/69.172;
$lon_range = abs($range/(cos($latitude) * 69.172));
$min_lat = number_format($latitude - $lat_range, "4", ".", "");
$max_lat = number_format($latitude + $lat_range, "4", ".", "");
$min_lon = number_format($longitude - $lon_range, "4", ".", "");
$max_lon = number_format($longitude + $lon_range, "4", ".", "");
$zusatzqu.=" AND (poslat BETWEEN '".$min_lat."' AND '".$max_lat."' AND poslon BETWEEN '".$min_lon."' AND '".$max_lon."')";
}
}
Kurz zur Defination:
- $search_Location enthält den Ort oder PLZ des Standortes.
- $search_Distance ist der Radius für die Umkreissuche in km In de Datenbank stehen die DS mit Angaben deren Standorte (poslat/poslon). Die Grundquery wird um die $zusatzqu erweitert. So weit, so gut.
Jetzt kommt mein Problem (manch einer wird jetzt wohl "endlich" sagen): Die Umkreissuche funktioniert "manchmal", nämlich je nach Wert des Radius. Bleibe ich unter 100km funktioniert sie immer, zwischen 150-450 km gar nicht und darüber kommen wieder Ergebnisse (aber soweit ich sehen kann, nicht alle).
Konkrete Ausgaben der jw. Query ergaben offensichtlich "richtige" Min- bzw. Max-Werte aber trotzdem liefert die Abfrage null Ergebnisse.
Da ich mit meinem Latein ziemlich am Ende bin hoffe ich auf eure Hilfe. (Vielleicht habe ich da doch ein Denkfehler....)
Gruss Dieter