首页 > 解决方案 > 通过给定的经度和纬度查找在数据库中注册的位置 - Laravel

问题描述

我正在从事电子商务工作,但在理解通过给定(经度 - 纬度)查找位置并从数据库中的位置表中获取匹配位置的方法时遇到了问题。

我有位置表来存储我国家的所有城市。

前任:

城市名 费用 液化天然气 纬度
巴比尔。 12 47.0983 31.90043
巴格达。 5 47.0983 31.90043
………… ... ………… ……

上面的lng & lat是假的。

我想要的是:

当用户从移动应用程序中选择他在地图上的位置时,应用程序会通过 API 端点发送他选择的位置(经度 - 纬度):

例如 /locations?lng=xxx&lat=xxx

然后服务器(Laravel 应用程序)应该检查(lng-lat)和位置表,以根据给定的凭据找到用户的城市。

抱歉,如果我不能很好地解释,但这是应该的,不要检查最近的位置或类似的东西。

标签: phplaravelgeolocatione-commercelatitude-longitude

解决方案


根据您的解释,我可以理解的是,您想找到离用户位置最近的城市。你可以在这里使用距离farmula

=ACOS( SIN(lat1 * PI()/180) * SIN(lat2 * PI()/180) + COS(lat1 * PI()/180) * COS(lat2 * PI()/180) * COS(lon2 * PI()/180-lon1 * PI()/180) ) * 6371000

您可以使用此公式将 lat、lng 转换为距离,然后可以根据距离对数据进行排序。

或者,如果您只想根据给定的 lat、lng 查询数据,那么您可以简单地在您的表上运行选择查询。要确保的一件事是,您必须将 lat,lng 存储为小数点后 8 位才能找到准确的结果。


推荐阅读