背景/
目前,我们已经将100张左右的Lat / Lng映射到谷歌地图上。目的是通过从数据库中选择彼此相距几米的La / Lo值来显示这些位置的热点位置。
然后,组值将用于查找中心点并在热点地图上绘制一个圆圈。
当前设置/
目前我们请求的数据只有id(int),La(float),Lo(float)
概念/
我认为需要的是这个
Select * from table
Group by (
( La + 0.30 && La - 0.30) && ( Lo + 0.30 && Lo - 0.30)
)
答案 0 :(得分:0)
首先,地球不是正方形,所以要获得准确的距离,你需要使用半正功能(查找),但是,对于几米的距离,准确度无关紧要。
其次,弧度之间的距离在110.574和111.694km之间变化,经度在111.32和0.0km之间(在极点是0.0km)。在任何情况下,0.3介于0到35,000米之间 - 除非你的热点位于北极和/或南极,否则不是“几个”。
第三,忽略糟糕的地理位置,你正在摸索的SQL语句将需要交叉连接并对计算的距离进行排序,即使对于一个小的数据集也会非常慢 - 你需要查看使用mysql支持的任何支持原生地理类型。我知道SQL Server有它们,我怀疑MySQL也有。
修改强>
确实如此,请参阅this问题。