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我有什么做的公里查询或仅仅是转换的问题,从英里公里?
看起来您回答了您自己的问题:“要以公里而不是英里搜索,请用6371替换3959”。 (1mi = 1.609344km,3959 * 1.609344 =大致6371) – Crontab
此外,您应该阅读地图产品的许可证,我不确定您是否允许存储有关检索数据的副本。 – Pentium10