\n";
// --- Richtungsbestimmung ---
// Achtung: Punkte liegen in zeitlich absteigender Reihenfolge vor
// Betrag in km und Richtungsbestimmung der Bewegung in der Länge: Osten oder Westen
$diff_long = ($loc_long - $prev_loc_long) * $distLongKm;
$move_long = "o";
$diff_rel_start = 0;
if ($diff_long >= 0) {
$move_long = "w";
$diff_rel_start = -360;
}
// Betrag in km und Richtungsbestimmung der Bewegung in der Breite: Norden oder Süden
$diff_lat = ($loc_lat - $prev_loc_lat) * DIST_LAT_KM;
$move_lat = "n";
if ($diff_lat >= 0) {
$move_lat = "s";
$diff_rel_start = -180;
if ($move_long == "w")
$diff_rel_start = 180;
}
$diff_str = "(" . str_replace(".", ",", sprintf("%01.3f", abs($diff_long))) . " km nach " . strtoupper($move_long) . ",
" . str_replace(".", ",", sprintf("%01.3f", abs($diff_lat))) . " km nach " . strtoupper($move_lat) . ")
";
// Bestimmung der Hauptrichtung der Bewegung in Länge oder Breite
if (abs($diff_lat) > abs($diff_long)) {
// Betrag der Bewegung in der Breite (nach Norden/Süden) ist größer als die in der Länge (nach Osten/Westen)
$direction = $move_lat;
$diff_rel = abs($diff_long) / abs($diff_lat);
if ($diff_rel >= 0.25 && $diff_rel < 0.75)
$direction .= $move_lat . $move_long;
if ($diff_rel >= 0.75)
$direction .= $move_long;
} else {
// Betrag der Bewegung in der Länge (nach Osten/Westen) ist größer als die in der Breite (nach Norden/Süden)
$direction = $move_long;
$diff_rel = abs($diff_lat) / abs($diff_long);
if ($diff_rel >= 0.25 && $diff_rel < 0.75)
$direction .= $move_lat . $move_long;
if ($diff_rel >= 0.75)
$direction = $move_lat . $direction;
$diff_rel_start = -90;
if ($diff_long >= 0) {
$diff_rel_start = 270;
}
if ($diff_lat >= 0) {
$diff_rel_start = 90;
if ($move_long == "w")
$diff_rel_start = -270;
}
}
// die Werte in $diff_rel_start sind größtenteils falsch, müssen noch korrigiert werden, bevor die Grad-Angabe ausgegeben werden kann
$diff_str = "Richtung: " /* . "
" . $diff_rel_start . " + " . sprintf("%01.0f", $diff_rel * 45) */ . "" . sprintf("%01.0f", abs(($diff_rel_start + $diff_rel * 45) * 10) / 10) . "° " . strtoupper($direction) . "
" . $diff_str;
// --- ---
// return "../images/arrow_" . $direction . ".png";
return $direction;
}
function getVelocity($loc_long, $loc_lat, $loc_time, $prev_loc_long, $prev_loc_lat, $prev_loc_time)
{
if ($loc_time == "1970-01-01 01:00:00" || $prev_loc_time == "1970-01-01 01:00:00")
return "?";
$distKm = acos(sin(deg2rad($loc_lat)) * sin(deg2rad($prev_loc_lat)) + cos(deg2rad($loc_lat)) * cos(deg2rad($prev_loc_lat)) * cos(deg2rad($prev_loc_long) - deg2rad($loc_long))) * GEO_EARTH_RADIUS;
//echo "$loc_long, $loc_lat, $loc_time, $prev_loc_long, $prev_loc_lat, $prev_loc_time, $distKm , " . (strtotime($prev_loc_time) - strtotime($loc_time)) . ", " . (($distKm / (strtotime($prev_loc_time) - strtotime($loc_time))) * 3600) . "
";
return round(($distKm / (strtotime($prev_loc_time) - strtotime($loc_time))) * 3600);
}
function getLocatingType($cr_gps_type) {
$cr_gps_type_text = "";
if ($cr_gps_type == 0) {
$cr_gps_type_text = "unbestimmt";
} elseif ($cr_gps_type == 1) {
$cr_gps_type_text = "LBS";
} elseif ($cr_gps_type == 2) {
$cr_gps_type_text = "GPS";
} elseif ($cr_gps_type == 3) {
$cr_gps_type_text = "Network";
} elseif ($cr_gps_type == 9) {
$cr_gps_type_text = "Ortung aus";
}
return $cr_gps_type_text;
}
function formDateTime($sqlDate) {
global $today;
return substr($sqlDate, 8, 2) . "." . substr($sqlDate, 5, 2) . "." . substr($sqlDate, 0, 4) . ", " . substr($sqlDate, 11, 8);
}
?>