使用地理跟踪和SQL查询

时间:2012-07-26 20:45:02

标签: mysql search geolocation geocoding

我正在构建一个数据库,用户可以在搜索字段中输入他们要查找的内容,我需要以最接近用户的人首先显示的方式列出结果,然后工作他们远离用户当前位置的方式。

所以我正在寻找一种方法来包含(因素)Geo位置和查询。数据库将包含大量将被搜索的字段,包括每个字段的位置。

这整个过程与Google的地图位置搜索非常相似(即搜索“我附近的餐馆”)。

我已经尝试使用谷歌搜索这个答案,我在其他论坛上问过,我已经搜索了stackoverflow并且还没有找到帮助来完成这个。

1 个答案:

答案 0 :(得分:1)

您可以使用MySQL Spatial Extensions按距离排序结果

http://dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html

这允许您进行类似

的查询
SELECT name, AsText(location), SQRT(POW( ABS( X(location) - X(@center)), 2) + POW( ABS(Y(location) - Y(@center)), 2 )) AS distance 
FROM Points 
WHERE Intersects( location, GeomFromText(@bbox) ) 
AND SQRT(POW( ABS( X(location) - X(@center)), 2) + POW( ABS(Y(location) - Y(@center)), 2 )) < @radius 
ORDER BY distance; 

http://howto-use-mysql-spatial-ext.blogspot.com/