我正在构建一个数据库,用户将能够在其中输入他们正在寻找的搜索字段,并且我需要以最接近用户的人将首先显示的方式列出结果,并进一步工作从用户的当前位置。
所以我正在寻找一种在查询中包含(因素)地理位置的方法。该数据库将有许多字段可供搜索,包括每个字段的位置。
这整个过程将很像谷歌的地图位置搜索(即搜索“我附近的餐厅”)。
我试过用谷歌搜索这个答案,我在其他论坛上问过,我已经搜索了 stackoverflow,但还没有找到帮助来完成这个。
我正在构建一个数据库,用户将能够在其中输入他们正在寻找的搜索字段,并且我需要以最接近用户的人将首先显示的方式列出结果,并进一步工作从用户的当前位置。
所以我正在寻找一种在查询中包含(因素)地理位置的方法。该数据库将有许多字段可供搜索,包括每个字段的位置。
这整个过程将很像谷歌的地图位置搜索(即搜索“我附近的餐厅”)。
我试过用谷歌搜索这个答案,我在其他论坛上问过,我已经搜索了 stackoverflow,但还没有找到帮助来完成这个。
您可以使用 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;