通过mysql中的lat lng获取10km内的记录

时间:2015-01-29 03:29:26

标签: php mysql gps sqldatatypes

很抱歉以前没有处理过GPS数据。可能是一个新手问题

所以,我创建了存储gps数据的表,如下所示:

table name : request
    id
    lat decimal(10,8)   
    lng decimal(11,8)   

最近,我想获得给定GPS点内10km的数据。

e.g. Given GPS lat: 22, lng: 114 , found all data within 10km

我发现有一种叫做“点”的数据类型。和SQL查询相关

SELECT *
FROM request
WHERE MBRContains
(
LineString
(
Point (
@lng + 10 / ( 111.1 / COS(RADIANS(@lat))),
 @lat + 10 / 111.1
),
 Point (
@lng - 10 / ( 111.1 / COS(RADIANS(@lat))),
 @lat - 10 / 111.1
)
),
 POINTFROMTEXT('POINT(22 114)')
)

即使应该有一些结果,它返回0结果,例如。我有一些记录,lat是22.1,114.1。怎么解决?感谢。

1 个答案:

答案 0 :(得分:1)

我引用了这个问题,它被重复关闭,但重复列表可以让您对问题集和解决方案有一个很好的概述。

Radius of 40 kilometers using latitude and longitude