如何从给定的经度和纬度得到到某个地方的距离

xuo3flqw  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(321)

我想从db中选择我所在位置周围10公里范围内的位置。例如,选择 Location_1 在我的示例数据库中,我想从数据库中获得类似上述条件的位置。我现在用yii2。
这是我的db表示例,名为“places”

ID          Location        Longitude   Latitude
----------- ---------- ---------- -----------
1           Location_1      30.8505081  14.2575487
2           Location_2      30.828072   14.1554811
3           Location_3      30.850763   14.250705
4           Location_4      30.8484719  14.252653

现在,我不知道如何从经纬度到距离我现在的位置。

2mbi3lxu

2mbi3lxu1#

试试这个。该位置的纬度为14.2575487,经度为30.8505081,从该位置可以在10公里内找到表中的结果。

SELECT *,ROUND(  1.609 * 3956 * 2  * ASIN(SQRT(POWER(SIN((14.2575487 - ABS(Latitude)) * PI()/180 / 2),2) + COS(14.2575487 * PI()/180 ) * COS(ABS(Latitude) * PI()/180) * POWER(SIN((30.8505081 - Longitude ) * PI()/180 / 2), 2) )),0) AS distance FROM places WHERE 1=1  HAVING distance<= 10

相关问题