我在模式中有一个坐标数据库:

ID:纬度:经度:名称:desc

我已经设置了Google Maps应用程序,以在屏幕上有效显示标记。但是,我需要添加另一个功能,用户可以查看从中心点落在半径范围内的所有指针。

我将如何编写这样的sql语句:

Select all pointers that fall within a 10 mile radius of X & Y

最佳答案

下面的SQL应该工作:

SELECT * FROM Table1 a
WHERE (
          acos(sin(a.Latitude * 0.0175) * sin(YOUR_LATITUDE_X * 0.0175)
               + cos(a.Latitude * 0.0175) * cos(YOUR_LATITUDE_X * 0.0175) *
                 cos((YOUR_LONGITUDE_Y * 0.0175) - (a.Longitude * 0.0175))
              ) * 3959 <= YOUR_RADIUS_INMILES
      )

这基于余弦的球形定律,有关该主题的更多详细信息,请查看本文-http://www.movable-type.co.uk/scripts/latlong.html

关于sql - 选择落在中心点半径内的坐标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7783684/

10-10 10:14