MySQL选择地理位置范围内的行
Posted
技术标签:
【中文标题】MySQL选择地理位置范围内的行【英文标题】:MySQL select rows in Geolocation range 【发布时间】:2020-10-17 21:07:05 【问题描述】:背景信息:我正在制作一个应用程序(学校项目),用户可以在其中搜索附近的项目。我的应用使用存储所有项目数据的项目表。
我需要获取用户当前位置(51.337036、4.645095)一定直径(5km)内的行。在 Items 表中,有一列用于定位项目的纬度和经度。
在我当前的查询中,我可以选择正方形中的行(4 个坐标点),但我需要一个球体:
WHERE (C.latitude BETWEEN 50 AND 52) AND (C.longitude BETWEEN 3 AND 5)
是否可以使用 mysql Geolocation 变量或函数?
经过一番研究,我看到了 POINT 类型,但我的表没有那种类型(表需要保持不变)。
【问题讨论】:
距离什么2公里,你需要一个起点才能得到距离 是的,原点将由代码提供。 【参考方案1】:在评论中说你必须有一个有效的原点
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 公里的所有行
你必须把你自己的位置
【讨论】:
我需要在选择部分添加st_distance_sphere吗?现在我收到一个错误,说 st_distance_sphere 是未知的。 @tmach dev.mysql.com/doc/refman/5.7/en/… @Massa 我检查了链接,但工作室仍然显示错误('POINT' 不是可识别的内置函数名称) sam for ST_Distance_Sphere。 请添加解决问题的代码,您可以在任何需要它的地方使用 st_distance_sphere 进行计算,但正如我在答案中提到的那样,您需要一个有效的原点 这里也是函数的一个例子***.com/a/60067302/5193536以上是关于MySQL选择地理位置范围内的行的主要内容,如果未能解决你的问题,请参考以下文章