通过给定的经度和纬度查找在数据库中注册的位置 - Laravel

Find location registered in database by the given longitude and latitude - Laravel

我从事电子商务工作,我在理解通过给定的 (longitude - latitude) 查找位置并获取匹配位置的方法时遇到了问题来自数据库中的位置table。

我有 locations table 来存储我所在国家/地区的所有城市。

例如:

city_name 费用 lng 纬度
巴比伦 12 47.0983 31.90043
巴格达。 5 47.0983 31.90043
....... ... ....... ......

the above lng & lat are fake.

我想要的是:

当用户 select 他在移动应用的地图上的位置时,该应用会通过API 端点:

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

然后服务器(Laravel App)应该根据给定的 locations table 检查(lng-lat)以找到用户的城市积分。

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

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

=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

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

或者如果您只想根据给定的纬度、经度查询数据,那么您可以简单地 运行 select 查询您的 table。要确保的一件事是,您必须存储小数点后 8 位的经纬度才能找到准确的结果。