我有一个有地址的酒店数据库,也有经纬度的POI。
我想在半径(5公里10公里......)的酒店周围搜索这些POI。怎么做?
由于
答案 0 :(得分:2)
有一个(相当广泛的)教程,用于在JavaScript中创建“商店定位器”类型页面,MySQL PHP可从Google Geo API团队获得:
http://code.google.com/apis/maps/articles/phpsqlsearch.html
如果您看到“在地理编码附近搜索”部分,则可以将其修改为酒店的设置地理代码。或者,您可以为它提供一个酒店名称的字符串。这实际上取决于您希望搜索功能的运行方式。
这对你有帮助吗?
P.S。如果您想优化自己的版本,我还在此处发布了有关创建超高效版本的信息Mysql Haversine Procedure (radius)using a center point
答案 1 :(得分:0)
SELECT
*,
ACOS( SIN( RADIANS( `lat` ) ) * SIN( RADIANS( $lat ) ) + COS( RADIANS( `lat` ) )
* COS( RADIANS( $lat )) * COS( RADIANS( `lon` ) - RADIANS( $long )) ) * 6380 AS `distance`
FROM `places`
WHERE
ACOS( SIN( RADIANS( `lat` ) ) * SIN( RADIANS( $lat ) ) + COS( RADIANS( `lat` ) )
* COS( RADIANS( $lat )) * COS( RADIANS( `lon` ) - RADIANS( $long )) ) * 6380 < 10
ORDER BY `distance`
10是以公里为单位的半径
$lat
和$long
是中心或圆圈
如果您的表
lat
和lon
是属性