حساب کردن فاصله کاربران نسبت به یه لوکیشن

- 2 هفته پیش
توسط علی بیات آپدیت شد
webazin webazin ( 600 تجربه )
2 هفته پیش

سلام دوستان؛خسته نباشید،میخوایم فاصله کاربرا رو نسبت به یه نقطه دربیاریم و اون فاصله رو توی مدل با یه پارامتر اپند کنیم،چطو میشه یه لوکیشن از جایی که کوئری میزنیم به مدل مربوطه بفرستیم تا بشه این فاصله رو حساب کرد و داخل دیتای مدل اپند کرد؟

علی بیات ( 145287 تجربه )
2 هفته پیش
تخصص : توسعه دهنده ارشد وب

درود

شما دو گزینه دارید
۱. استفاده از فرمول haversine: این فرمول بر اساس طول و عرض جغرافیایی دو نقطه در سطح یک کره، فاصله آنها را حساب می‌کند و پیاده سازیش برای PHP شبیه به زیره:

function distance($latitude1, $longitude1, $latitude2, $longitude2) {

    $pi80 = M_PI / 180;
    $latitude1 *= $pi80;
    $longitude1 *= $pi80;
    $latitude2 *= $pi80;
    $longitude2 *= $pi80;

    $r = 6372.797; //  شعاع زمین
    $dlat = $latitude2 - $latitude1;
    $dlon = $longitude2 - $longitude1;
    $a = sin($dlat / 2) * sin($dlat / 2) + cos($latitude1) * cos($latitude2) * sin($dlon / 2) * sin($dlon / 2);
    $c = 2 * atan2(sqrt($a), sqrt(1 - $a));
    $km = $r * $c;

    return $km;
}

منتها دقت داشته باشید که چون این فرمول برای سطح کره هست (بدون پستی بلندی)، قاعدتا یه مقدار خطا داره اما کار میکنه

۲. استفاده از یه سرویس API :

این سرویس ها هم بر اساس همون فرمول کار میکنند، منتها نه به صورت ساده‌ای که بالا توضیح دادم.. مسائل پیچیده‌تری در این API ها رعایت شده نظیر مواردی که در لینک زیر توضیح داده شده:
https://en.wikipedia.org/wiki/Geographical_distance

موفق باشید

برای ارسال پاسخ باید وارد سایت شوید