我有一个MyISAM表,其中存储了数据。该数据包括Google Maps的纬度和经度。我的目标是选择所有在样本纬度和经度半径为40公里范围内的对象。谢谢!
可能重复:
多个纬度/经度点的半径
mysql查询中的距离计算
基于纬度/经度选择20公里内的内容
请保留HTML标签。
可能重复:
多个纬度/经度点的半径
mysql查询中的距离计算
基于纬度/经度选择20公里内的内容
请保留HTML标签。
我使用这个查询来获取在以$lat
/$lng
为中心,$radius
半径范围内的所有点:
SELECT
*,
( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `lat` ) ) * cos( radians( `lng` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `lat` ) ) ) ) AS distance
FROM `positions`
HAVING distance <= {$radius}
ORDER BY distance ASC
6371是地球半径,单位为公里。我并没有发明它:http://code.google.com/intl/en/apis/maps/articles/phpsqlsearch.html
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql(编辑:URL已更改)
3959
- 只需将数字替换为该值,您的结果将以英里而不是公里为单位。 - DerVO$lat = -74.016617; $lng = 40.747933;
。 - DerVOtbl_area
as s) HAVING distance <= 40 ORDER BY s
.id DESC我编写了这个查询来获取所有在40公里范围内的区域列表。它对我很有效。您可以根据需要更改表名。 - vaibhav kulkarni