我想从下面的数据库表中找到最近的位置
Address Latitude longitude
Kathmandu 44600, Nepal 27.7 85.33333330000005
Los, Antoniterstraße 37.09024 -95.71289100000001
Sydney NSW, Australia 49.7480755 8.111794700000019
goa india 15.2993265 74.12399600000003
我从谷歌地图上获取了所有这些数据。在这里,我必须找到离我最近的地方。假设我在苏尔赫特,它的纬度是28.6度,经度是81.6度,我怎样才能找到离苏尔赫特最近的地方呢。
使用MySQL查找附近的位置
下面的SQL语句将查找距离37,-122坐标25英里半径内最近的20个位置。它基于该行的纬度/经度和目标纬度/经度计算距离,然后仅要求距离值小于25的行,按距离对整个查询排序,并将其限制为20个结果。要按公里而不是英里搜索,请将3959替换为6371。
表结构:
id,name,address,lat,lng
注-此处纬度=37
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
sin( radians( lat ) ) ) ) AS distance FROM your_table_name HAVING
distance < 25 ORDER BY distance LIMIT 0 , 20;
你可以在这里找到详细信息。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
要查找附近的位置,可以使用Geocoder类。由于您有地理点(纬度和经度),因此可以使用反向地理编码。反向地理编码是将(纬度、经度)坐标转换为(部分)地址的过程。查看此以了解更多信息。