SELECT Postleitzahl, lat, lng, truncate ( (Grad (acos (sin (Radiant (lat
)) * sin (Radiant ('$ Breite.')) + cos (Radiant ('. $ Breite 'Radiant() (lat
)) * cos) * cos (Radiant (lng
- ('. $ Länge.'))) ) ) * 69,172), 2) als Entfernung VON myData
Diese Abfrage berechnet die Entfernung (in Meilen). Aber wenn ich bei Google Maps die Entfernung für den gleichen Längen- und Breitengrad überprüfe, stimmt mein Ergebnis nicht überein. Wenn die Entfernung etwa 10 Meilen ist, ist mein Ergebnis ein wenig genau, aber darüber wird es falsch (zum Beispiel zeigte mein Ergebnis 13 Meilen und Google zeigte 22 Meilen für die gleichen PLZ-Werte)Wie bekomme ich genaue oder (fast genaue) Entfernung zwischen zwei Orten? Mysql/PHP
Ich habe diese Abfrage von http://forums.mysql.com/read.php?23,3868,3868#msg-3868
Wie kann ich es genau bekommen? Irgendwelche Ideen? Danke für Hilfe.
UPDATE
versuchte ich @Blixt Code in PHP. Abgeholt 2 Probe Postleitzahlen und ihre Lats sehnt
//B28 9ET
$lat1 = 52.418819;
$long1 = -1.8481053;
//CV5 8BX
$lat2 = 52.4125573;
$long2 = -1.5407743;
$dtr = M_PI/180;
$latA = $lat1 * $dtr;
$lonA = $long1 * $dtr;
$latB = $lat2 * $dtr;
$lonB = $long2 * $dtr;
$EarthRadius = 3958.76; //miles
echo $distance = $EarthRadius * acos(cos($latA) * cos($latB) * cos($lonB - $lonA) + sin($latA) * sin($latB));
Ergebnisse:
Meine app - 12,95 Meilen
Google - 17,8 Meilen
Irgendwelche Ideen, wie man es richtig machen?
Sind Sie sicher, dass Google bei der Berechnung von Entfernungen keine Straßen wie Straßen berücksichtigt? – 0scar
hmm .. kann deswegen sein. Ich habe die Route in Google Maps überprüft. Gibt es irgendeine Formel, um Google etwas Ähnliches zu geben? – TigerTiger
Es gibt keine Formel, um Straßen zu berücksichtigen, abgesehen von einer Art durchschnittlichem Abstand zwischen Vogel und Strecke, die in 99% der Fälle falsch ist. Sie müssen eine API verwenden, mit der Sie in diesem Fall die Straßenentfernung erhalten. Sehen Sie sich die Google Maps-API an: http://code.google.com/apis/maps/ – Blixt