راکت

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

1 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

1
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

درود

شما دو گزینه دارید
۱. استفاده از فرمول 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

موفق باشید

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام