就我的申请而言,我使用谷歌地图,以便: 用户将在地图上标记他所在的位置(它存储在数据库中)。然后,当他再次查看地图时,应该显示其他靠近他的用户。
坐标存储在名为coords
的用户的db字段中,格式为:22.515578,33.265897(纬度,经度)
查询应该是什么,以便找到距离他+/- 1(或任何其他距离)的所有标记? (例如,如果他是22.515578,33.265897那么它应该搜索其他例如21.515578,32.265897或23.515578,34.265897)
提前致谢!
答案 0 :(得分:1)
This可以帮到你。
例如,这里给定纬度和经度为32,-122,距离小于25英里。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
FROM geocodeTable HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
答案 1 :(得分:0)
不要重新发明轮子。如果您正在使用mysql,请尝试空间扩展和几何之间的空间函数(即distance)。如果您尝试手动执行此操作而不是you must go another way。干杯< / p>