From 7967f0b9cd6326e5053f51fa93600abd28fa16d8 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Tue, 27 Aug 2024 21:10:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=20IndexController=20?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E8=B7=9D=E7=A6=BB=E8=AE=A1=E7=AE=97=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=8F=90=E9=AB=98=E4=BB=A3=E7=A0=81=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7=E5=92=8C=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/IndexController.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index 9add06bd8..dbe09f340 100644 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -135,9 +135,8 @@ class IndexController extends BaseApiController $latitude = $params['lat']; $longitude = $params['long']; // 计算距离的SQL表达式 - $distanceSql = "SQRT(POW(69.1 * (latitude - {$latitude}), 2) + - POW(69.1 * ({$longitude} - longitude) * COS(latitude / 57.3), 2))"; - $find = SystemStore::field("id, name,abbreviation, {$distanceSql} AS distance") + $distanceExpr = "6371 * 2 * ASIN(SQRT(POWER(SIN(({$latitude} - abs(latitude)) * pi()/180 / 2), 2) + COS({$latitude} * pi()/180) * COS(abs(latitude) * pi()/180) * POWER(SIN(({$longitude} - longitude) * pi()/180 / 2), 2)))"; + $find = SystemStore::field("id, name,abbreviation, {$distanceExpr} AS distance") ->where('is_show', '=', 1) ->where('latitude', '<>', '') ->where('longitude', '<>', '')