我有一个数据库,其中有一些商店,其纬度和经度位于当前位置。所以根据我输入的当前(纬度,纬度)位置,我想得到一些半径范围内的物品清单,如1公里,5公里等?
答案 0 :(得分:1)
您可以使用 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 是您所需的纬度,
startlng 是您所需的纬度,
69.1 是英里到纬度的转换因子,
57.3 约为180 / pi,
5 是以英里为单位的搜索半径
我通过这些&lt; 5距离。
答案 1 :(得分:0)
这是我几年前用过的一个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`
答案 2 :(得分:0)
请阅读:http://www.movable-type.co.uk/scripts/latlong-db.html它会告诉您如何操作。