BriToGi
Geowizard
Code:
function Heading($lat2, $long2)
{
// Takes lat/longs as expressions in Degrees
$pi = 3.14159265358979;
$rLat1 = 0.0;
$rLong1 = 0.0;
$rLat2 = 0.0;
$rLong2 = 0.0;
$d = 0.0;
$h = 0.0;
$result = 0.0;
$home_lat = $_SESSION['home_lat']; //52.480938;
$home_lon = $_SESSION['home_lon']; //13.317232;
$rLat1 = deg2rad($home_lat);
$rLong1 = deg2rad($home_lon);
$rLat2 = deg2rad($lat2);
$rLong2 = deg2rad($long2);
// Distance in Meters Using Radians
// Less subject to rounding errors for small distances
$d = ( 2 * asin(sqrt(pow(sin(($rLat1 - $rLat2) / 2), 2) + cos($rLat1) * cos($rLat2) * pow(sin(($rLong1 - $rLong2) / 2),2))));
if (sin(ABS($rLong2) - ABS($rLong1)) < 0)
{
$h = acos(((sin($rLat2) - sin($rLat1)) * cos($d)) / (sin($d) * cos($rLat1)));
}
else
{
$h = 2 * $pi - acos(((sin($rLat2) - sin($rLat1)) * cos($d)) / (sin($d) * cos($rLat1)));
}
$result = rad2deg($h);
$result = round($result+0.5); // auf ganze zahl runden
$result = 360 - $result;
if(is_nan($result))
$result = 180;
return($result);
}
Hi, irgendwo bei 180° ist ein Fehler, ich tippe auf einen devision by zero, wenn 180 reuakommen sollte, ist $result NAN, die beiden Zeilen unten:
Code:
if(is_nan($result))
$result = 180;
korrigieren das zwar, aber schön ist es nicht. Hat jemand eine Idee?
Sorry dass es den Code in der Ansicht so zerhaut...