Der folgende Code berechnet die Entfernung zweier Längen- und Breitengrade (Dezimalgrad). Folgendes muß an die Funktion übergeben werden:
- lat1, lon1: Breitengrad und Längengrad des ersten Punktes (in Dezimalgrad)
- lat2, lon2: Breitengrad und Längengrad des zweiten Punktes (in Dezimalgrad)
- unit: Das gewünschte Längenmaß. Dabei entspricht „M“ Meilen, „K“ Kilometer und „N“ Seemeilen.
<?php
function distance( $lat1, $lon1, $lat2, $lon2, $unit ) {
$theta = $lon1 - $lon2;
$dist = sin( deg2rad( $lat1 )) * sin( deg2rad( $lat2 )) + cos( deg2rad( $lat1 )) * cos( deg2rad( $lat2 )) * cos( deg2rad( $theta ));
$dist = acos( $dist );
$dist = rad2deg( $dist );
$miles = $dist * 60 * 1.1515;
$unit = strtoupper( $unit );
if ($unit == 'K') {
return ( $miles * 1.609344 );
} else if ( $unit == 'N' ) {
return ( $miles * 0.8684 );
} else {
return $miles;
}
}
echo distance(52.5200, 13.4050, 48.1351, 11.5820, 'M') . ' Meilen' . "\n";
echo distance(52.5200, 13.4050, 48.1351, 11.5820, 'K') . ' Kilometer' . "\n";
echo distance(52.5200, 13.4050, 48.1351, 11.5820, 'N') . ' Seemeilen' . "\n";
?>
Die drei Beispielzeilen berechnen die Entfernung zwischen Berlin und München. Das Ergebnis:
313.41407650596 Meilen 504.39106354041 Kilometer 272.16878403777 Seemeilen