2011-11-24 51 views
0

我使用的表格名为:Properties,使用Google Maps我在后端存储从Google Map Mark获得的经度和纬度数据。比率 - 基于经纬度字段的MySQL查询

在前端,系统让用户拖动标记到一个给定的位置(经度和纬度),以自动获得(这部分很容易使用jquery ajax方法)所有属性接近,例如在(公里不包括英里): 2公里,5公里,10公里。但说实话,我是Stuck试图找出如何做这种有效的MySQL查询。请点亮一些光?

从谷歌文档,我发现这是在数:

这里的SQL语句,将寻找最近的20个地点是25英里到37半径内,-122协调。它根据该行的纬度/经度和目标纬度/经度计算距离,然后仅请求距离值小于25的行,按距离排序整个查询,并将其限制为20个结果。要通过公里而非英里搜寻,与6371.

SELECT id, (3959 * acos(cos(radians(37)) 
        * cos(radians(lat)) 
        * cos(radians(lng) 
        - radians(-122)) + sin(radians(37)) 
        * sin(radians(lat)))) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance LIMIT 20 OFFSET 0; 

取代3959我有什么做的公里查询或仅仅是转换的问题,从英里公里?

+2

看起来您回答了您自己的问题:“要以公里而不是英里搜索,请用6371替换3959”。 (1mi = 1.609344km,3959 * 1.609344 =大致6371) – Crontab

+0

此外,您应该阅读地图产品的许可证,我不确定您是否允许存储有关检索数据的副本。 – Pentium10

回答

3

为了记录在案:

看起来你回答了自己的问题:“要依公里而非英里搜寻,与6371. 3959换成” (1mi = 1.609344km,3959 * 1.609344 =大约6371)