Php 如何基于GPS经纬度列根据相对距离查询Mysql

Php 如何基于GPS经纬度列根据相对距离查询Mysql,php,mysql,database,gps,latitude-longitude,Php,Mysql,Database,Gps,Latitude Longitude,在我正在构建的一个应用程序中,我希望用户能够轻松发现身边的人。我使用GPS获取纬度和经度,然后将该信息与其他用户信息一起存储在mysql数据库中的纬度列和经度列下。最好的做法是做一个查询,查看进行查询的人的信息……然后让它找到最接近的可能相关纬度和经度,然后从那里开始,并将其限制为24个结果?此外,我如何记得它在哪里停止,以便允许另一个查询从它停止的地方开始,并返回越来越远的查询 基本上,概括一下,我如何做一个mysql查询,从尽可能接近我提供的2个纬度和经度点开始,然后让它抓取接下来的24个按

在我正在构建的一个应用程序中,我希望用户能够轻松发现身边的人。我使用GPS获取纬度和经度,然后将该信息与其他用户信息一起存储在mysql数据库中的纬度列和经度列下。最好的做法是做一个查询,查看进行查询的人的信息……然后让它找到最接近的可能相关纬度和经度,然后从那里开始,并将其限制为24个结果?此外,我如何记得它在哪里停止,以便允许另一个查询从它停止的地方开始,并返回越来越远的查询

基本上,概括一下,我如何做一个mysql查询,从尽可能接近我提供的2个纬度和经度点开始,然后让它抓取接下来的24个按最近到最远排序的点

我觉得这将是很难做到的,因为它是基于2列。是否有一种方法可以将GPS值组合成一列,以便轻松找到相对距离


也许我能以某种方式得到邮政编码(但那可能会导致非美国问题)。我不确定。我被卡住了。

只要在Stackoverflow上搜索“Haversine公式”,你就会发现几个相关的问题。

正如@cdonner所提到的,Haversine公式有很多资源,你可以用来将lat和long转换为distance。您将根据公式的设置方式(通常基于英里)传入距离变量,并从最近的半径开始运行查询。使用php循环,只需增加距离并重新运行查询,直到获得所需数量的结果。同时也要看看google link re@Maleck13,非常有用