2012-05-18 65 views
-1

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

+0

如果您在Google中仔细搜索(http://www.zipcodeworld.com/samples/distance.java.html)以计算距离,有方法示例。 – Crazenezz

+0

@antyrat:感谢这个不错的激励链接。 :) –

回答

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

如果你确实有longitudelatitude数据,你可以用这些计算来排序搜索结果。


实施例的数据:

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

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

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