MySQL select 行在地理位置范围内
MySQL select rows in Geolocation range
背景信息:我正在制作一个应用程序(学校项目),用户可以在其中搜索附近的项目。我的应用程序使用 table 个项目,其中存储了所有项目数据。
我需要获取用户当前位置(51.337036, 4.645095) 一定直径(5km) 内的行。在项目 table 中有用于定位项目的纬度和经度列。
在我当前的查询中,我可以 select 正方形(4 个坐标点)中的行,但我需要一个球体:
WHERE (C.latitude BETWEEN 50 AND 52) AND (C.longitude BETWEEN 3 AND 5)
是否可以使用 MySQL 地理位置变量或函数?
经过一些研究,我看到了一个类型 POINT,但是我的 table 没有那个类型(table 需要保持不变)。
AS 在评论中说你必须有一个有效的起源点
WHERE st_distance_sphere(POINT(-82.337036, 29.645095 ), POINT(C.`longitude`, C.`latitude` ))/1000 <= 2 AND T.difficulty = 1 AND T.terrain = 2;
这将为您提供距 POINT(-82.337036, 29.645095) 最大 2 公里距离的所有行
你必须把你自己的位置
背景信息:我正在制作一个应用程序(学校项目),用户可以在其中搜索附近的项目。我的应用程序使用 table 个项目,其中存储了所有项目数据。
我需要获取用户当前位置(51.337036, 4.645095) 一定直径(5km) 内的行。在项目 table 中有用于定位项目的纬度和经度列。
在我当前的查询中,我可以 select 正方形(4 个坐标点)中的行,但我需要一个球体:
WHERE (C.latitude BETWEEN 50 AND 52) AND (C.longitude BETWEEN 3 AND 5)
是否可以使用 MySQL 地理位置变量或函数?
经过一些研究,我看到了一个类型 POINT,但是我的 table 没有那个类型(table 需要保持不变)。
AS 在评论中说你必须有一个有效的起源点
WHERE st_distance_sphere(POINT(-82.337036, 29.645095 ), POINT(C.`longitude`, C.`latitude` ))/1000 <= 2 AND T.difficulty = 1 AND T.terrain = 2;
这将为您提供距 POINT(-82.337036, 29.645095) 最大 2 公里距离的所有行
你必须把你自己的位置