سلام دوستان؛خسته نباشید،میخوایم فاصله کاربرا رو نسبت به یه نقطه دربیاریم و اون فاصله رو توی مدل با یه پارامتر اپند کنیم،چطو میشه یه لوکیشن از جایی که کوئری میزنیم به مدل مربوطه بفرستیم تا بشه این فاصله رو حساب کرد و داخل دیتای مدل اپند کرد؟
درود
شما دو گزینه دارید
۱. استفاده از فرمول 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
موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟