鉴于输入是_LATITUDE,_LONGITUDE和_METERSRANGE
SELECT *, 
       ( ( ( Acos(Sin(( _LATITUDE * Pi() / 180 )) * Sin(( 
                  ` LATITUDE `* Pi() / 180 )) + 
                    Cos 
                      (( 
                        _LATITUDE * Pi() / 180 )) * Cos(( 
                    ` LATITUDE `* Pi() / 180 )) * 
                    Cos 
                      (( 
                        ( 
                             _LONGITUDE - ` LONGITUDE ` ) * Pi() / 180 ))) ) * 
           180 / Pi 
           () 
         ) * 60 * 1.1515 * 1.609344 * 1000 ) AS METERS 
FROM   MYTABLE 
WHERE  METERS <= _METERSRANGE
如果有人仍在寻找答案,计算距离很简单(精确获取方向很难计算,如果有人知道简单的答案,请添加)
因此,检查经纬度值之间的差异,将十进制更改为 0.001 意味着 111m 距离。检查纬度和经度到十进制的变化最大 0.001 将在您的点周围绘制一个半径为 111m 的圆。
前任。您的起点是 A(Lat1,Lng1)。您要测试的点 B(LatB,LngB) , C(LatC,LngC) .....
if: (Lat1 - 0.001) < LatB < (Lat1 + 0.001) && (Lng1 - 0.001) < LngB < (Lng1 + 0.001) == True // B 点在 100m 半径内。
if: (Lat1 - 0.001) < LatC < (Lat1 + 0.001) && (Lng1 - 0.001) < LngC < (Lng1 + 0.001) == False // 点 C 不在 100m 半径内。
十进制度参考https://en.wikipedia.org/wiki/Decimal_ Degrees
| 小数 | 度 | 距离 | 
|---|---|---|
| 0 | 1.0 | 111 公里 | 
| 1 | 0.1 | 11.1公里 | 
| 2 | 0.01 | 1.11 公里 | 
| 3 | 0.001 | 111米 | 
| 4 | 0.0001 | 11.1米 | 
| 5 | 0.00001 | 1.11米 | 
| 6 | 0.000001 | 0.111米 | 
| 7 | 0.0000001 | 1.11厘米 | 
| 8 | 0.00000001 | 1.11毫米 | 
| 归档时间: | 
 | 
| 查看次数: | 7709 次 | 
| 最近记录: |