在 mysql 中通过 lat lng 获取 10 公里以内的记录

Get record within 10km by lat lng in mysql

抱歉之前没有处理过GPS数据。可能是新手问题

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

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

最近,我想获取给定GPS点内10公里范围内的数据。

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

而且我发现有一种数据类型叫做"point"。还有一个 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)')
)

它 return 0 结果,即使应该有一些结果,例如。我有一些记录,lat 是 22.1 , 114.1 。如何解决?谢谢

我会参考这个问题,它作为重复项关闭,但重复项列表让您对问题集和解决方案有一个很好的概述。

Radius of 40 kilometers using latitude and longitude