如何使用经度和纬度计算一家餐厅和该餐厅附近的10名司机之间的距离



我有两个表:

------                  ---------
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);
}
}
$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();

最新更新