我正在为邮局建立一个目录网站。我想让用户搜索最近的邮局,该邮局提供他们所需的服务。最好的方法是什么?最简单或最有效的方法是什么?
如何根据用户的位置和搜索词进行搜索,并返回基于邻近度的结果?
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)
}
看看这些答案,看看有几种方法可以做到这一点。