From b25dcf02dcb02a4505bc87dce5e6bbf6cef11367 Mon Sep 17 00:00:00 2001 From: R Date: Sat, 17 Sep 2022 10:02:37 +0700 Subject: [PATCH] Change Distance Calculation to cosinus --- .../Linksehat/Http/Controllers/Api/HospitalController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/Linksehat/Http/Controllers/Api/HospitalController.php b/Modules/Linksehat/Http/Controllers/Api/HospitalController.php index 38a0b246..3923fd62 100644 --- a/Modules/Linksehat/Http/Controllers/Api/HospitalController.php +++ b/Modules/Linksehat/Http/Controllers/Api/HospitalController.php @@ -31,10 +31,11 @@ class HospitalController extends Controller }); $hospitals->select([ "organizations.*", - DB::raw("ST_Distance_Sphere(point(addresses.lng,addresses.lat), point(".$request->lng.",".$request->lat.")) /1000 as distance_km") + // DB::raw("ST_Distance_Sphere(point(addresses.lng,addresses.lat), point(".$request->lng.",".$request->lat.")) /1000 as distance_km"), + DB::raw("6371 * acos (cos ( radians($request->lat) ) * cos( radians( addresses.lat ) ) * cos( radians( addresses.lng ) - radians($request->lng) ) + sin ( radians($request->lat) ) * sin( radians( addresses.lat ) )) as distance_km") ]); - $hospitals->orderBy('distance_km', 'desc'); + $hospitals->orderBy('distance_km', 'asc'); } else { $hospitals->orderBy('organizations.name', 'asc'); }