我想从数据库中选择我所在位置周围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
现在,我不知道如何从经度和纬度到距当前位置的距离。
答案 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