按距离排序搜索结果

时间:2012-05-18 10:07:12

标签: java javascript jquery sorting

我有db表,其中包含邮政编码,长/拉数据,地区,城市等位置详细信息。 我正在使用此数据在我的Web应用程序中显示用户位置。现在我想根据距离对用户搜索的地点进行排序,就像最近的地方一样。如何计算用户当前位置与他搜索过的位置之间的距离,然后根据距离对结果进行排序。

2 个答案:

答案 0 :(得分:1)

i just have this function for calculate distance between two latitude,longitude, pleaes have a look if its helpful to you.

function distance(lat1, lon1, lat2, lon2, unit) {
    var radlat1 = Math.PI * lat1/180
    var radlat2 = Math.PI * lat2/180
    var radlon1 = Math.PI * lon1/180
    var radlon2 = Math.PI * lon2/180
    var theta = lon1-lon2
    var radtheta = Math.PI * theta/180
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    dist = Math.acos(dist)
    dist = dist * 180/Math.PI
    dist = dist * 60 * 1.1515
    if (unit=="K") { dist = dist * 1.609344 }
    if (unit=="N") { dist = dist * 0.8684 }
    return dist
}      

答案 1 :(得分:1)

如果您确实拥有longitudelatitude数据,则可以使用这些数据进行计算以对搜索结果进行排序。


示例数据:

  • 执行搜索的用户有(经度/纬度):51.993073,5.952585
  • 用户1(经度/纬度):52.893073,5.952585
  • 用户2(经度/纬度):60.993073,5.952585

您可以清楚地看到“用户1”比执行搜索的用户更接近“用户2”(请参阅​​经度)。

注意:您需要一个公式来计算,请检查JDev的答案。