PDA

View Full Version : بدست اوردن مسافت های طی شده جی پی اس و اشتباه بودن



omid_student
پنج شنبه 05 دی 1392, 18:55 عصر
سلام دوستان
من یه سری اطلاعات جغرافیای جی پی اس رو توی بانک ذخیره کردم همراه با تاریخ
بعد که میام توی تاریخی مشخص اطلاعات رو بیرون بکشم و ببینم چقدر مسافت طی شده
نتیجه رو بدست میارم ولی مسافت در مثلا در روز جاری با مسافت در همون ماه که سی روز است یه مقدار رو میدن
کد هم اینطوره
اومدم از بانک خودندم توی ارایه ریختم بعد اون رو پیمایش کردم و فاصله قبل رو با بعدی پیدا کردم
به نظرتون عادیه یا کد اشتباهه
تابع زیر برای بدست اوردن مسافته


function distance($lat1, $lng1, $lat2, $lng2, $unit) {

$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;

$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;

return ($km);
}

تابع زیر هم از بانک به صورت ارایه میگیره و فاصله رو بدست میاره



function getDistance($row)
{
//get sum distance walk user
$lat1 = 0;
$long1 = 0;
$distance = 0;
foreach($row as $rows)
{
$lat2 = $rows['sLatitude'];
$long2 = $rows['sLongitude'];
$distance += $this->distance($lat1,$long1,$lat2,$long2,"M");
$lat1 = $rows['sLatitude'];
$long1 = $rows['sLongitude'];
}
return @round($distance,0);
}

کد زیر هم مقدار ها رو میفرسته



$sql = "SELECT sLatitude,sLongitude FROM tbl_locations WHERE sUsername='355696058767639' ";
$res = $this->db->query($sql);
$row = $res->result_array();
$t = $this->getDistance($row);