如何根据用户的位置和搜索词进行搜索,并返回基于邻近度的结果?

时间:2016-11-16 作者:Erademus

我正在为邮局建立一个目录网站。我想让用户搜索最近的邮局,该邮局提供他们所需的服务。最好的方法是什么?最简单或最有效的方法是什么?

1 个回复
SO网友:jgraup

可以通过邮政编码查询数据库。

那么您需要一种方法来利用Haversine formula 计算距离并按最短值排序。

function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2); 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
  return d;
}

function deg2rad(deg) {
  return deg * (Math.PI/180)
}
看看这些答案,看看有几种方法可以做到这一点。