在给定经度和纬度的情况下,如何从数据库获取到地点的距离

时间:2018-10-26 02:17:17

标签: php mysql yii2

我想从数据库中选择我所在位置周围10公里范围内的位置。 例如,当在示例数据库中选择Location_1时,我想从数据库中获取类似于上述条件的Locations。 我现在使用Yii2。

这是我的数据库表示例,名为“ 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

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

1 个答案:

答案 0 :(得分:2)

尝试一下。该位置的纬度为14.2575487,经度为30.8505081,可在10 Kms内从该表中找到结果。

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