我正在试图弄清楚如何根据与数字的接近程度从MySQL表中选择数据。这就是我的意思。
我正在编写一个存储地点坐标(经度和纬度)的应用程序,我希望能够做的是根据用户所在位置从数据库中选择数据。所以,比方说,例如,我在数据库中有三个位置:[( - 70.425,45.836),( - 74.234,41.639),( - 75.747,41.836)],用户的位置是(-74.345,41.625) )。我希望能够选择条目,使它们根据与用户的距离展开,按顺序获得三个条目:[(-74.234,41.639),( - 75.747,41.836),( - 70.425, 45.836)。
这在MySQL中是否可行,或者我是否必须从数据库中选择一些条目并使用我的编程语言进行计算?
答案 0 :(得分:2)
看一下这篇文章
http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/
引用
“所以你的整个桌子上都摆满了与他们相关的纬度和经度的成员或地方。只需用你想要找到距离的中心点替换$ lat和$ lon。你也可以改变距离< = 10到您要搜索的号码。这会将结果限制在距离起点10英里以内的所有结果
SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon – lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS
{距离{1}} {成员{1}} {距离{1}} {距离{1}}
“
注意$ lon和$ lat将是你的php fvariables。 lat和lon(sans $)是本例中的列名,即
表将是具有列lat和lon
的成员