
经纬度示意图
下面是 MySQL 根据当前 GPS 的经纬度,查询周围 N 公里内建筑物具体示例,其中:
$lat 是纬度,$lng 是经度;`gps` 是表中记录的 GPS 信息,在我的表里,格式是 23.13525,113.286297,所以用 SUBSTRING_INDEX 转换一下取出对应的值(如果你的不是,则不需要);$radius 是期望的距离,5000 = 5 公里;
SELECT `id`, `building_name`,
(
6371 * ACOS (
COS ( RADIANS(".$lat.") )
* COS( RADIANS( SUBSTRING_INDEX(`gps`, ',', 1) ) )
* COS( RADIANS( SUBSTRING_INDEX(`gps`, ',', -1) ) - RADIANS(".$lng.") )
+ SIN ( RADIANS(".$lat.") )
* SIN( RADIANS( SUBSTRING_INDEX(`gps`, ',', 1) ) )
)
) AS distance
FROM `table`
HAVING distance <= ".$radius." ORDER BY distance
LIMIT 500

用 ST_Distance(g1, g2 [, unit]):
返回 g1 和 g2 之间的距离,以几何参数的空间参考系统 (SRS) 的长度单位测量,如果指定,则以可选单位参数的单位测量。

此函数通过返回两个几何参数的组件的所有组合之间的最短距离来处理几何集合。