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

Php 通过mysql中的lat lng获取10km内的记录,php,mysql,gps,sqldatatypes,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 * FR

对不起,之前没有处理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.1141.1。如何修复它?谢谢。

我想引用这个问题,它作为一个重复项关闭,但重复项列表为您提供了问题集和解决方案的非常好的概述


我也有兴趣了解此解决方案谢谢您的支持,期待您能提供任何可能的解决方案副本