【发布时间】:2011-09-18 13:14:19
【问题描述】:
我有一个带有地址的酒店数据库,还有带有纬度和经度的 POI。
我想以半径(5 公里 10 公里...)搜索酒店周围的这些 POI。怎么做?
谢谢
【问题讨论】:
标签: mysql google-maps google-maps-api-3
我有一个带有地址的酒店数据库,还有带有纬度和经度的 POI。
我想以半径(5 公里 10 公里...)搜索酒店周围的这些 POI。怎么做?
谢谢
【问题讨论】:
标签: mysql google-maps google-maps-api-3
Google Geo APIs 团队提供了一个(相当广泛的)使用 JavaScript、MySQL PHP 创建“Store Locator”类型页面的教程:
http://code.google.com/apis/maps/articles/phpsqlsearch.html
如果您看到“在地理代码附近搜索”下的部分,您可以将其修改为酒店的设置地理代码。或者,您可以只为其提供酒店名称的字符串。这实际上取决于您希望搜索如何发挥作用。
这对你有帮助吗?
附:如果您想优化自己的版本,我还在这里发布了有关创建此版本的超高效版本Mysql Haversine Procedure (radius)using a center point
【讨论】:
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 是表格的属性
【讨论】: