移动设备webapp的“查找最近”流程?

时间:2010-11-23 16:09:06

标签: javascript mobile geolocation gps

希望为移动网络应用实施“查找最近”流程,该流程将根据用户的当前位置自动选择表单下拉列表中项目的最接近匹配。

假设我们列表中的每个元素都有lat / long,以及移动设备中的人员位置,找到最近项目的最佳方法是什么?我们将有大约150-200个可能的项目,并希望最接近用户的项目,以便我们可以将其设置为默认项目。

有没有办法在JS中有效地执行此操作,还是更适合服务器端?

1 个答案:

答案 0 :(得分:1)

你需要一个循环来计算距离,从此以后,最接近。使用Haversine公式:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var distance = R * c;

更好地运行自己的基准测试,以确定在服务器端或客户端做这样做是否更好。