我有一个数据库与当前位置的经度和纬度的商店。因此,基于我输入的当前(lat,lng)位置,我想从半径为1 km、5 km等范围内的位置获取项目列表。
发布于 2016-01-19 18:00:00
您可以使用MySQL查询从数据库记录中获取所有结果(纬度、经度和距离),如下所示:
SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - [startlat]), 2) +
POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 5 ORDER BY distance;地址:
startlat是你想要的纬度,
开始是你想要的纬度,
69.1是英里到纬度的换算系数,
57.3大约是180/π,
5是以英里为单位的搜索半径
我通过这些距离小于5的记录来过滤这个结果。
发布于 2016-01-19 17:57:33
下面是几年前我用过的mysql代码:
SELECT
`id`,
`name`,
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 AS `distance`
FROM `stations`
WHERE
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 < 10
ORDER BY `distance`发布于 2016-01-19 17:59:12
https://stackoverflow.com/questions/34873515
复制相似问题