webazin webazin
5 سال پیش توسط webazin webazin مطرح شد
1 پاسخ

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

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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
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

موفق باشید


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

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