获取附近位置的最佳方式?

时间:2012-02-06 19:31:18

标签: php mysql google-maps google-maps-api-3 google-maps-markers

在我的应用程序中,我们要求用户输入邮政编码以查询附近的位置。我们使用zipcode的LatLng对象作为原点,然后我们绘制一个虚构的“边界框”来查询数据库中该范围内的所有位置。这些位置将在地图上显示为用户将能够看到的标记。我们希望将结果限制在10-15左右。

数据库示例:

database

我在考虑使用MySQL的BETWEEN运算符在垂直和水平方向上查询±2度,然后LIMIT n这些结果,或者我可以将整个数据库拉入PHP然后使用{{{ 1}}。

我不确定什么是解决这个问题的最佳方式,所以如果你们之前有任何人已经处理过这个场景,我会很感激,并且可以提供一些如何解决它的见解。

1 个答案:

答案 0 :(得分:6)

在sql中执行

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 
    0 , 20;

http://code.google.com/apis/maps/articles/phpsqlsearch.html