Как рассчитать расстояние между рестораном и 10 водителями, которые находятся поблизости от этого ресторанного ресторана, используя долготу и широту? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть две таблицы:

------                  ---------
places                  drivers 
------                  --------- 
longitude               longitude

latitude                latitude

Что я хочу сделать?

Я хочу рассчитать расстояние между местом и водителями, чтобы найти как минимум 10 водителей, которые находятся близко к разместить и отправить им уведомления.

Моя проблема?

Моя проблема в том, что я не знаю, как рассчитать расстояние от места долготы и широты и найти 10 водителей долготы и широты, которые поблизости.

Мой код:

$order = Order::find($id);

 $drivers = Driver::where('id','!=',$driver->id)->get();

 $place = Place::find('id',$order->place_id);

 $place_longitude = $place->longitude;
 $place_latitude = $place->latitude;

foreach ($drivers as $driver) {

       if ($driver->availability === 1 )
        {
           $driver_longitude = $driver->longitude;
            $driver_latitude = $driver->latitude;

             $uuid = $driver->uniqid;
             NotificationHelper::orderNotificationForDriver($order->id,$uuid);
         }
  }

1 Ответ

2 голосов
/ 02 мая 2020
$drivers = Driver::where('id','!=',$driver->id)->selectRaw ( "(6371 * acos( cos( radians('$place_latitude') ) * cos( radians(latitude) ) * cos( radians(longitude) - radians('$place_longitude') ) + sin( radians('$place_latitude') ) * sin( radians(latitude) ) ) ) AS distance" )->orderBy('distance')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...