我已经读了很多关于用Lat和Long计算两点位置之间距离的最佳方法(如谷歌地图)。
我已经阅读了这个问题,非常接近我自己的问题,它提供了一个MySQL查询解决方案(链接),我也阅读了GeoTools PHP(链接GitHub)和GeoTools Laravel(链接GitHub)。
就我自己而言,我目前的立场是这样的:
37.754782, -122.425240
我在MySQL中以相同的格式(大约1000K)存储了很多点,我需要获得与我当前位置最近的100个点(以米或公里为单位)。
我想为Laravel REST API和MySQL找到正确的解决方案,有什么想法吗?有什么建议吗?
谢谢!!
为存储有关位置的信息(或写入行查询)的模型设置查询范围的最简单方法,它将使用MySQL存储过程来计算内容(使用Sphinx搜索,如您的示例所示)。
在Laravel中创建REST API并不难,它将获取点坐标并使用此范围来查找和返回最接近POI的结果。
我正在做同样的事情,并使用 POINT 数据类型来存储位置的 Lat Lng。然后我使用distance_sphare函数来获取距离。下面是 mySQL 5.7 中此函数的代码
ST_DISTANCE_SPHERE(mysql_column_lat_lng, POINT($lat $lng))
此功能将以米为单位返回距离,但问题是它将返回位移(两点之间的最短距离,始终是一条线)。
使用上述方法无法获得行驶距离,您需要调用谷歌地图 API 来获取行驶距离。