2012-12-12 11 views
6

Ich berechne derzeit die Fahrdistanz zwischen zwei Punkten auf einer meiner Wordpress Websites innerhalb einer Funktion. Ich erreichen dies die Matrix google Entfernung unter Verwendung vonBerechnen "in der Luftlinie" distance php

wp_remote_get(
    "http://maps.googleapis.com/maps/api/distancematrix/json?origins=". 
    urlencode($origin). 
    "&destinations=". 
    urlencode($destination). 
    "&sensor=false&units=imperial" 
) 

aufrufen und dann Einsetzen der Ursprungs- und Zielorte Benutzer haben über ein Formular in die URL eingegeben. Ist es möglich, einen ähnlichen Ansatz zur Berechnung einer "Luftlinie" zu verwenden oder muss ich meine Funktion überarbeiten?

+1

, die Sie ohne Google Maps können:

Sie können Ihre Implementierung durch den Vergleich dieser worked example überprüfen. Suchen Sie nach der Formel, mit der Sie die physikalisch kürzeste Entfernung zwischen zwei Punkten auf dem Globus erhalten. – MAXIM

+0

Bei dieser Frage geht es nicht um das Google Maps API V3. (Markierung entfernt) – Marcelo

Antwort

7

Entfernung zwischen 2 Punkten: (LAT1, LON1) bis (LAT2, LON2)

distance = acos(
    cos(lat1 * (PI()/180)) * 
    cos(lon1 * (PI()/180)) * 
    cos(lat2 * (PI()/180)) * 
    cos(lon2 * (PI()/180)) 
    + 
    cos(lat1 * (PI()/180)) * 
    sin(lon1 * (PI()/180)) * 
    cos(lat2 * (PI()/180)) * 
    sin(lon2 * (PI()/180)) 
    + 
    sin(lat1 * (PI()/180)) * 
    sin(lat2 * (PI()/180)) 
    ) * 3959 

3959 ist die Erdradius in Meilen. Ersetzen Sie diesen Wert durch Radius in KM (oder einer anderen Einheit), um Ergebnisse auf derselben Einheit zu erhalten.