使用Laravel计算MySQL当前和其他点之间的距离

时间:2014-11-21 13:02:35

标签: php mysql google-maps laravel

我已经阅读了很多关于使用Lat和Long计算两点位置之间距离的最佳方法(如谷歌地图)。

我已经非常接近我提出的MySQL查询解决方案(link)这个问题,我读过有关GeoTools PHP(link GitHub)和GeoTools Laravel({{3} })。

就我个人而言,我的目前职位是这样的:

37.754782, -122.425240

我在MySQL中以相​​同的格式(大约1000K)存储了很多点,我需要获得距我当前位置最近的100个点(以米或公里为单位)。

我想为Laravel REST API和MySQL找到一个正确的解决方案,任何想法?有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

最简单的方法是为模型创建查询范围,其中存储有关位置的信息(或写行查询),这将使用计算内容的MySQL存储过程(在您的示例中使用Sphinx搜索)。

create REST API in Laravel并不难以获取点坐标并使用此范围来查找并返回最近POI的结果。

答案 1 :(得分:0)

我正在研究相同的事情并使用POINT数据类型来存储Lat Lng的位置。然后我使用distance_sphare函数来获得距离。下面是mySQL 5.7中此函数的代码

ST_DISTANCE_SPHERE(mysql_column_lat_lng, POINT($lat $lng))

此功能将以米为单位返回距离,但问题是它将返回位移(两点之间的最短距离,总是一条直线)。

使用上述方法无法获得行驶距离,您需要调用google map api才能获得行驶距离。